Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ReflectionWriteMembers()

override int System.Runtime.Serialization.ReflectionXmlClassWriter.ReflectionWriteMembers ( XmlWriterDelegator xmlWriter,
object obj,
XmlObjectSerializerWriteContext context,
ClassDataContract classContract,
ClassDataContract derivedMostClassContract,
int childElementIndex,
XmlDictionaryString[] emptyStringArray )
inlineprotected

Definition at line 10 of file ReflectionXmlClassWriter.cs.

11 {
12 int num = ((classContract.BaseContract != null) ? ReflectionWriteMembers(xmlWriter, obj, context, classContract.BaseContract, derivedMostClassContract, childElementIndex, emptyStringArray) : 0);
13 childElementIndex += num;
16 context.IncrementItemCount(classContract.Members.Count);
17 int num2 = 0;
18 while (num2 < classContract.Members.Count)
19 {
20 DataMember dataMember = classContract.Members[num2];
21 Type memberType = dataMember.MemberType;
22 if (dataMember.IsGetOnlyCollection)
23 {
24 context.StoreIsGetOnlyCollection();
25 }
26 else
27 {
28 context.ResetIsGetOnlyCollection();
29 }
30 bool flag = true;
31 object obj2 = null;
32 if (!dataMember.EmitDefaultValue)
33 {
34 obj2 = ReflectionGetMemberValue(obj, dataMember);
35 object defaultValue = XmlFormatGeneratorStatics.GetDefaultValue(memberType);
36 if ((obj2 == null && defaultValue == null) || (obj2 != null && obj2.Equals(defaultValue)))
37 {
38 flag = false;
39 if (dataMember.IsRequired)
40 {
41 XmlObjectSerializerWriteContext.ThrowRequiredMemberMustBeEmitted(dataMember.Name, classContract.UnderlyingType);
42 }
43 }
44 }
45 if (flag)
46 {
47 bool flag2 = CheckIfMemberHasConflict(dataMember, classContract, derivedMostClassContract);
48 if (obj2 == null)
49 {
50 obj2 = ReflectionGetMemberValue(obj, dataMember);
51 }
52 PrimitiveDataContract memberPrimitiveContract = dataMember.MemberPrimitiveContract;
53 if (flag2 || !ReflectionTryWritePrimitive(xmlWriter, context, memberType, obj2, memberNames[num2 + childElementIndex], @namespace, memberPrimitiveContract))
54 {
55 ReflectionWriteStartElement(xmlWriter, memberType, @namespace, @namespace.Value, dataMember.Name, 0);
56 if (classContract.ChildElementNamespaces[num2 + childElementIndex] != null)
57 {
58 XmlDictionaryString ns = classContract.ChildElementNamespaces[num2 + childElementIndex];
59 xmlWriter.WriteNamespaceDecl(ns);
60 }
61 ReflectionWriteValue(xmlWriter, context, memberType, obj2, flag2, null);
62 ReflectionWriteEndElement(xmlWriter);
63 }
64 if (classContract.HasExtensionData)
65 {
66 context.WriteExtensionData(xmlWriter, ((IExtensibleDataObject)obj).ExtensionData, num);
67 }
68 }
69 num2++;
70 num++;
71 }
72 return num;
73 }
override int ReflectionWriteMembers(XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContext context, ClassDataContract classContract, ClassDataContract derivedMostClassContract, int childElementIndex, XmlDictionaryString[] emptyStringArray)

References System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Runtime.Serialization.Dictionary, System.Xml.Dictionary, System.Runtime.Serialization.XmlFormatGeneratorStatics.GetDefaultValue(), System.Runtime.Serialization.XmlObjectSerializerContext.IncrementItemCount(), System.obj, System.Runtime.Serialization.ReflectionXmlClassWriter.ReflectionWriteMembers(), System.Runtime.Serialization.XmlObjectSerializerWriteContext.ResetIsGetOnlyCollection(), System.Runtime.Serialization.XmlObjectSerializerWriteContext.StoreIsGetOnlyCollection(), System.Runtime.Serialization.XmlObjectSerializerWriteContext.ThrowRequiredMemberMustBeEmitted(), and System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteExtensionData().

Referenced by System.Runtime.Serialization.ReflectionXmlClassWriter.ReflectionWriteMembers().