tangxu
2024-12-29 72e75456f8b30ec5b6f355539d9c883b0f810d21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Globalization;
using System.IO;
 
namespace DPumpHydr.WinFrmUI.WenSkin.Json.Serialization
{
    internal class TraceJsonReader : JsonReader, IJsonLineInfo
    {
        private readonly JsonReader _innerReader;
 
        private readonly JsonTextWriter _textWriter;
 
        private readonly StringWriter _sw;
 
        public override int Depth => _innerReader.Depth;
 
        public override string Path => _innerReader.Path;
 
        public override char QuoteChar
        {
            get
            {
                return _innerReader.QuoteChar;
            }
            protected internal set
            {
                _innerReader.QuoteChar = value;
            }
        }
 
        public override JsonToken TokenType => _innerReader.TokenType;
 
        public override object Value => _innerReader.Value;
 
        public override Type ValueType => _innerReader.ValueType;
 
        int IJsonLineInfo.LineNumber => (_innerReader as IJsonLineInfo)?.LineNumber ?? 0;
 
        int IJsonLineInfo.LinePosition => (_innerReader as IJsonLineInfo)?.LinePosition ?? 0;
 
        public TraceJsonReader(JsonReader innerReader)
        {
            _innerReader = innerReader;
            _sw = new StringWriter(CultureInfo.InvariantCulture);
            _sw.Write("Deserialized JSON: " + Environment.NewLine);
            _textWriter = new JsonTextWriter(_sw);
            _textWriter.Formatting = Formatting.Indented;
        }
 
        public string GetDeserializedJsonMessage()
        {
            return _sw.ToString();
        }
 
        public override bool Read()
        {
            bool result = _innerReader.Read();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override int? ReadAsInt32()
        {
            int? result = _innerReader.ReadAsInt32();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override string ReadAsString()
        {
            string result = _innerReader.ReadAsString();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override byte[] ReadAsBytes()
        {
            byte[] result = _innerReader.ReadAsBytes();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override decimal? ReadAsDecimal()
        {
            decimal? result = _innerReader.ReadAsDecimal();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override double? ReadAsDouble()
        {
            double? result = _innerReader.ReadAsDouble();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override bool? ReadAsBoolean()
        {
            bool? result = _innerReader.ReadAsBoolean();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override DateTime? ReadAsDateTime()
        {
            DateTime? result = _innerReader.ReadAsDateTime();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override DateTimeOffset? ReadAsDateTimeOffset()
        {
            DateTimeOffset? result = _innerReader.ReadAsDateTimeOffset();
            _textWriter.WriteToken(_innerReader, writeChildren: false, writeDateConstructorAsDate: false, writeComments: true);
            return result;
        }
 
        public override void Close()
        {
            _innerReader.Close();
        }
 
        bool IJsonLineInfo.HasLineInfo()
        {
            return (_innerReader as IJsonLineInfo)?.HasLineInfo() ?? false;
        }
    }
}