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

◆ WriteEnumAndArrayTypes()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteEnumAndArrayTypes ( )
inlineprivate

Definition at line 1111 of file XmlSerializationReaderCodeGen.cs.

1112 {
1113 TypeScope[] scopes = base.Scopes;
1114 foreach (TypeScope typeScope in scopes)
1115 {
1116 foreach (Mapping typeMapping in typeScope.TypeMappings)
1117 {
1118 if (typeMapping.IsSoap)
1119 {
1120 continue;
1121 }
1122 if (typeMapping is EnumMapping)
1123 {
1124 EnumMapping enumMapping = (EnumMapping)typeMapping;
1125 base.Writer.Write("if (");
1126 WriteQNameEqual("xsiType", enumMapping.TypeName, enumMapping.Namespace);
1127 base.Writer.WriteLine(") {");
1128 base.Writer.Indent++;
1129 base.Writer.WriteLine("Reader.ReadStartElement();");
1130 string s = ReferenceMapping(enumMapping);
1131 base.Writer.Write("object e = ");
1132 base.Writer.Write(s);
1133 base.Writer.WriteLine("(CollapseWhitespace(Reader.ReadString()));");
1134 base.Writer.WriteLine("ReadEndElement();");
1135 base.Writer.WriteLine("return e;");
1136 base.Writer.Indent--;
1137 base.Writer.WriteLine("}");
1138 }
1139 else
1140 {
1141 if (!(typeMapping is ArrayMapping))
1142 {
1143 continue;
1144 }
1145 ArrayMapping arrayMapping = (ArrayMapping)typeMapping;
1146 if (!arrayMapping.TypeDesc.HasDefaultConstructor)
1147 {
1148 continue;
1149 }
1150 base.Writer.Write("if (");
1151 WriteQNameEqual("xsiType", arrayMapping.TypeName, arrayMapping.Namespace);
1152 base.Writer.WriteLine(") {");
1153 base.Writer.Indent++;
1154 MemberMapping memberMapping = new MemberMapping();
1157 Member member = new Member(this, "a", "z", 0, memberMapping);
1158 TypeDesc typeDesc = arrayMapping.TypeDesc;
1159 string cSharpName = arrayMapping.TypeDesc.CSharpName;
1160 if (typeDesc.UseReflection)
1161 {
1162 if (typeDesc.IsArray)
1163 {
1164 base.Writer.Write(typeof(Array).FullName);
1165 }
1166 else
1167 {
1168 base.Writer.Write("object");
1169 }
1170 }
1171 else
1172 {
1173 base.Writer.Write(cSharpName);
1174 }
1175 base.Writer.Write(" a = ");
1176 if (arrayMapping.TypeDesc.IsValueType)
1177 {
1178 base.Writer.Write(base.RaCodeGen.GetStringForCreateInstance(cSharpName, typeDesc.UseReflection, ctorInaccessible: false, cast: false));
1179 base.Writer.WriteLine(";");
1180 }
1181 else
1182 {
1183 base.Writer.WriteLine("null;");
1184 }
1185 WriteArray(member.Source, member.ArrayName, arrayMapping, readOnly: false, isNullable: false, -1);
1186 base.Writer.WriteLine("return a;");
1187 base.Writer.Indent--;
1188 base.Writer.WriteLine("}");
1189 }
1190 }
1191 }
1192 }
void WriteArray(string source, string arrayName, ArrayMapping arrayMapping, bool readOnly, bool isNullable, int fixupIndex)

References System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.ArrayName, System.Xml.Dictionary, System.FullName, System.Xml.Serialization.XmlSerializationCodeGen.ReferenceMapping(), System.s, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.Source, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteArray(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteQNameEqual().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteLiteralStructMethod().