Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ReflectionJsonClassWriter.cs
Go to the documentation of this file.
2using System.Xml;
3
5
7{
8 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
10 {
11 int num = ((classContract.BaseContract != null) ? ReflectionWriteMembers(xmlWriter, obj, context, classContract.BaseContract, derivedMostClassContract, childElementIndex, memberNames) : 0);
12 childElementIndex += num;
13 context.IncrementItemCount(classContract.Members.Count);
14 int num2 = 0;
15 while (num2 < classContract.Members.Count)
16 {
19 if (dataMember.IsGetOnlyCollection)
20 {
22 }
23 else
24 {
26 }
27 bool flag = true;
28 object obj2 = null;
29 if (!dataMember.EmitDefaultValue)
30 {
33 if ((obj2 == null && defaultValue == null) || (obj2 != null && obj2.Equals(defaultValue)))
34 {
35 flag = false;
36 if (dataMember.IsRequired)
37 {
39 }
40 }
41 }
42 if (flag)
43 {
44 if (obj2 == null)
45 {
47 }
51 {
52 if (flag2)
53 {
55 }
56 else
57 {
59 }
62 }
63 if (classContract.HasExtensionData)
64 {
65 context.WriteExtensionData(xmlWriter, ((IExtensibleDataObject)obj).ExtensionData, num);
66 }
67 }
68 num2++;
69 num++;
70 }
71 return num;
72 }
73
75 {
76 xmlWriter.WriteStartElement(name, null);
77 }
78
80 {
81 xmlWriter.WriteStartElement(name, null);
82 }
83
85 {
86 xmlWriter.WriteEndElement();
87 }
88}
override int ReflectionWriteMembers(XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContext context, ClassDataContract classContract, ClassDataContract derivedMostClassContract, int childElementIndex, XmlDictionaryString[] memberNames)
void ReflectionWriteStartElement(XmlWriterDelegator xmlWriter, XmlDictionaryString name)
void ReflectionWriteStartElement(XmlWriterDelegator xmlWriter, string name)
static void WriteJsonNameWithMapping(XmlWriterDelegator xmlWriter, XmlDictionaryString[] memberNames, int index)
void ReflectionWriteValue(XmlWriterDelegator xmlWriter, XmlObjectSerializerWriteContext context, Type type, object value, bool writeXsiType, PrimitiveDataContract primitiveContractForParamType)
bool ReflectionTryWritePrimitive(XmlWriterDelegator xmlWriter, XmlObjectSerializerWriteContext context, Type type, object value, XmlDictionaryString name, XmlDictionaryString ns, PrimitiveDataContract primitiveContract)
object ReflectionGetMemberValue(object obj, DataMember dataMember)
void WriteExtensionData(XmlWriterDelegator xmlWriter, ExtensionDataObject extensionData, int memberIndex)
override MemberTypes MemberType
Definition Type.cs:41