Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ReflectionJsonReader.cs
Go to the documentation of this file.
3using System.Xml;
4
6
8{
9 private enum KeyParseMode
10 {
11 Fail,
15 }
16
17 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
41
43 {
44 return string.Empty;
45 }
46
48 {
49 return "item";
50 }
51
53 {
54 return string.Empty;
55 }
56
57 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
65
66 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
76
77 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
79 {
83 int num = 0;
84 while (type.IsGenericType && type.GetGenericTypeDefinition() == Globals.TypeOfNullable)
85 {
86 num++;
87 type = type.GetGenericArguments()[0];
88 }
90 DataContract memberTypeContract = classDataContract.Members[0].MemberTypeContract;
93 {
94 keyParseMode = KeyParseMode.AsString;
95 }
96 else if (type.IsEnum)
97 {
98 keyParseMode = KeyParseMode.UsingParseEnum;
99 }
100 else if (memberTypeContract.ParseMethod != null)
101 {
102 keyParseMode = KeyParseMode.UsingCustomParse;
103 }
104 if (keyParseMode == KeyParseMode.Fail)
105 {
107 }
108 while (true)
109 {
110 switch (xmlReader.MoveToContent())
111 {
112 case XmlNodeType.EndElement:
113 return;
114 default:
116 case XmlNodeType.Element:
117 {
118 context.IncrementItemCount(1);
120 object key = keyParseMode switch
121 {
124 {
125 TypeCode.Boolean => bool.Parse(jsonMemberName),
126 TypeCode.Int16 => short.Parse(jsonMemberName),
127 TypeCode.Int32 => int.Parse(jsonMemberName),
128 TypeCode.Int64 => long.Parse(jsonMemberName),
129 TypeCode.Char => char.Parse(jsonMemberName),
130 TypeCode.Byte => byte.Parse(jsonMemberName),
131 TypeCode.SByte => sbyte.Parse(jsonMemberName),
132 TypeCode.Double => double.Parse(jsonMemberName),
133 TypeCode.Decimal => decimal.Parse(jsonMemberName),
134 TypeCode.Single => float.Parse(jsonMemberName),
135 TypeCode.UInt16 => ushort.Parse(jsonMemberName),
136 TypeCode.UInt32 => uint.Parse(jsonMemberName),
137 TypeCode.UInt64 => ulong.Parse(jsonMemberName),
138 _ => memberTypeContract.ParseMethod.Invoke(null, new object[1] { jsonMemberName }),
139 },
140 _ => jsonMemberName,
141 };
142 if (num > 0)
143 {
145 }
146 object value = ReflectionReadValue(xmlReader, context, type2, string.Empty, string.Empty);
148 break;
149 }
150 }
151 }
152 }
153}
static object Parse(Type enumType, string value)
Definition Enum.cs:368
static string GetClrTypeFullName(Type type)
static object ReadJsonValue(DataContract contract, XmlReaderDelegator reader, XmlObjectSerializerReadContextComplexJson context)
override object ReflectionReadDictionaryItem(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, CollectionDataContract collectionContract)
void ReadSimpleDictionary(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, CollectionDataContract collectionContract, Type keyValueType, object dictionary)
override void ReflectionReadMembers(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString[] memberNames, XmlDictionaryString[] memberNamespaces, ClassDataContract classContract, ref object obj)
override string GetCollectionContractItemName(CollectionDataContract collectionContract)
override string GetCollectionContractNamespace(CollectionDataContract collectionContract)
override bool ReflectionReadSpecialCollection(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, CollectionDataContract collectionContract, object resultCollection)
override string GetClassContractNamespace(ClassDataContract classContract)
object ReflectionReadValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, Type type, string name, string ns, PrimitiveDataContract primitiveContractForOriginalType=null)
int ReflectionGetMembers(ClassDataContract classContract, DataMember[] members)
void ReflectionReadMember(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, ClassDataContract classContract, ref object obj, int memberIndex, DataMember[] members)
static Exception CreateUnexpectedStateException(XmlNodeType expectedState, XmlReaderDelegator xmlReader)
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string MustBeGreaterThanZero
Definition SR.cs:710
static string KeyTypeCannotBeParsedInSimpleDictionary
Definition SR.cs:630
Definition SR.cs:7
virtual Type[] GetGenericArguments()
Definition Type.cs:500
static TypeCode GetTypeCode(Type? type)
Definition Type.cs:919