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

◆ GenerateMembersElement()

void System.Xml.Serialization.ReflectionXmlSerializationWriter.GenerateMembersElement ( object o,
XmlMembersMapping xmlMembersMapping )
inlineprivate

Definition at line 1043 of file ReflectionXmlSerializationWriter.cs.

1044 {
1045 ElementAccessor accessor = xmlMembersMapping.Accessor;
1046 MembersMapping membersMapping = (MembersMapping)accessor.Mapping;
1047 bool hasWrapperElement = membersMapping.HasWrapperElement;
1048 bool writeAccessors = membersMapping.WriteAccessors;
1051 if (!membersMapping.IsSoap)
1052 {
1054 }
1055 object[] array = (object[])o;
1056 int num = array.Length;
1058 {
1059 WriteStartElement(accessor.Name, (accessor.Form == XmlSchemaForm.Qualified) ? accessor.Namespace : string.Empty, membersMapping.IsSoap);
1060 int num2 = FindXmlnsIndex(membersMapping.Members);
1061 if (num2 >= 0)
1062 {
1063 XmlSerializerNamespaces xmlns = (XmlSerializerNamespaces)array[num2];
1064 if (num > num2)
1065 {
1067 }
1068 }
1069 for (int i = 0; i < membersMapping.Members.Length; i++)
1070 {
1071 MemberMapping memberMapping = membersMapping.Members[i];
1072 if (memberMapping.Attribute == null || memberMapping.Ignore)
1073 {
1074 continue;
1075 }
1076 object memberValue = array[i];
1077 bool? flag2 = null;
1078 if (memberMapping.CheckSpecified != 0)
1079 {
1080 string text = memberMapping.Name + "Specified";
1081 for (int j = 0; j < Math.Min(num, membersMapping.Members.Length); j++)
1082 {
1083 if (membersMapping.Members[j].Name == text)
1084 {
1085 flag2 = (bool)array[j];
1086 break;
1087 }
1088 }
1089 }
1090 if (num > i && (!flag2.HasValue || flag2.Value))
1091 {
1092 WriteMember(memberValue, memberMapping.Attribute, memberMapping.TypeDesc, null);
1093 }
1094 }
1095 }
1096 for (int k = 0; k < membersMapping.Members.Length; k++)
1097 {
1098 MemberMapping memberMapping2 = membersMapping.Members[k];
1099 if (memberMapping2.Xmlns != null || memberMapping2.Ignore)
1100 {
1101 continue;
1102 }
1103 bool? flag3 = null;
1104 if (memberMapping2.CheckSpecified != 0)
1105 {
1106 string text2 = memberMapping2.Name + "Specified";
1107 for (int l = 0; l < Math.Min(num, membersMapping.Members.Length); l++)
1108 {
1109 if (membersMapping.Members[l].Name == text2)
1110 {
1111 flag3 = (bool)array[l];
1112 break;
1113 }
1114 }
1115 }
1116 if (num <= k || (flag3.HasValue && !flag3.Value))
1117 {
1118 continue;
1119 }
1120 object o2 = array[k];
1121 object choiceSource = null;
1122 if (memberMapping2.ChoiceIdentifier != null)
1123 {
1124 for (int m = 0; m < membersMapping.Members.Length; m++)
1125 {
1126 if (membersMapping.Members[m].Name == memberMapping2.ChoiceIdentifier.MemberName)
1127 {
1128 choiceSource = array[m];
1129 break;
1130 }
1131 }
1132 }
1133 if (flag && memberMapping2.IsReturnValue && memberMapping2.Elements.Length != 0)
1134 {
1135 WriteRpcResult(memberMapping2.Elements[0].Name, string.Empty);
1136 }
1137 WriteMember(o2, choiceSource, memberMapping2.ElementsSortedByDerivation, memberMapping2.Text, memberMapping2.ChoiceIdentifier, memberMapping2.TypeDesc, writeAccessors || hasWrapperElement);
1138 }
1140 {
1142 }
1143 if (!accessor.IsSoap)
1144 {
1145 return;
1146 }
1147 if (!hasWrapperElement && !writeAccessors && num > membersMapping.Members.Length)
1148 {
1149 for (int n = membersMapping.Members.Length; n < num; n++)
1150 {
1151 if (array[n] != null)
1152 {
1154 }
1155 }
1156 }
1158 }
void WriteMember(object o, object choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, bool writeAccessors)
void WritePotentiallyReferencingElement(string? n, string? ns, object? o)
void WriteNamespaceDeclarations(XmlSerializerNamespaces? xmlns)

References System.array, System.Xml.Dictionary, System.Xml.Serialization.ReflectionXmlSerializationWriter.FindXmlnsIndex(), System.Math.Min(), System.text, System.Xml.Serialization.XmlSerializationWriter.TopLevelElement(), System.Xml.Serialization.XmlSerializationWriter.WriteEndElement(), System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteMember(), System.Xml.Serialization.XmlSerializationWriter.WriteNamespaceDeclarations(), System.Xml.Serialization.XmlSerializationWriter.WritePotentiallyReferencingElement(), System.Xml.Serialization.XmlSerializationWriter.WriteReferencedElements(), System.Xml.Serialization.XmlSerializationWriter.WriteRpcResult(), System.Xml.Serialization.XmlSerializationWriter.WriteStartDocument(), and System.Xml.Serialization.XmlSerializationWriter.WriteStartElement().

Referenced by System.Xml.Serialization.ReflectionXmlSerializationWriter.WriteObject().