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

◆ WriteEnumAndArrayTypes()

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

Definition at line 734 of file XmlSerializationWriterCodeGen.cs.

735 {
736 TypeScope[] scopes = base.Scopes;
737 foreach (TypeScope typeScope in scopes)
738 {
739 foreach (Mapping typeMapping in typeScope.TypeMappings)
740 {
741 if (typeMapping is EnumMapping && !typeMapping.IsSoap)
742 {
743 EnumMapping enumMapping = (EnumMapping)typeMapping;
744 string cSharpName = enumMapping.TypeDesc.CSharpName;
745 base.Writer.Write("if (");
746 WriteTypeCompare("t", cSharpName, enumMapping.TypeDesc.UseReflection);
747 base.Writer.WriteLine(") {");
748 base.Writer.Indent++;
750 base.Writer.WriteLine("Writer.WriteStartElement(n, ns);");
751 base.Writer.Write("WriteXsiType(");
753 base.Writer.Write(", ");
755 base.Writer.WriteLine(");");
756 base.Writer.Write("Writer.WriteString(");
757 base.Writer.Write(s);
758 base.Writer.Write("(");
759 if (!enumMapping.TypeDesc.UseReflection)
760 {
761 base.Writer.Write("(" + cSharpName + ")");
762 }
763 base.Writer.WriteLine("o));");
764 base.Writer.WriteLine("Writer.WriteEndElement();");
765 base.Writer.WriteLine("return;");
766 base.Writer.Indent--;
767 base.Writer.WriteLine("}");
768 }
769 else if (typeMapping is ArrayMapping && !typeMapping.IsSoap && typeMapping is ArrayMapping arrayMapping && !typeMapping.IsSoap)
770 {
771 string cSharpName2 = arrayMapping.TypeDesc.CSharpName;
772 base.Writer.Write("if (");
773 if (arrayMapping.TypeDesc.IsArray)
774 {
775 WriteArrayTypeCompare("t", cSharpName2, arrayMapping.TypeDesc.ArrayElementTypeDesc.CSharpName, arrayMapping.TypeDesc.UseReflection);
776 }
777 else
778 {
779 WriteTypeCompare("t", cSharpName2, arrayMapping.TypeDesc.UseReflection);
780 }
781 base.Writer.WriteLine(") {");
782 base.Writer.Indent++;
783 base.Writer.WriteLine("Writer.WriteStartElement(n, ns);");
784 base.Writer.Write("WriteXsiType(");
786 base.Writer.Write(", ");
788 base.Writer.WriteLine(");");
789 WriteMember("o", null, arrayMapping.ElementsSortedByDerivation, null, null, arrayMapping.TypeDesc, writeAccessors: true);
790 base.Writer.WriteLine("Writer.WriteEndElement();");
791 base.Writer.WriteLine("return;");
792 base.Writer.Indent--;
793 base.Writer.WriteLine("}");
794 }
795 }
796 }
797 }
void WriteMember(string source, AttributeAccessor attribute, TypeDesc memberTypeDesc, string parent)
void WriteTypeCompare(string variable, string escapedTypeName, bool useReflection)
void WriteArrayTypeCompare(string variable, string escapedTypeName, string elementTypeName, bool useReflection)

References System.Xml.Serialization.TypeDesc.CSharpName, System.Xml.Dictionary, System.Xml.Serialization.Mapping.IsSoap, System.Xml.Serialization.XmlSerializationCodeGen.ReferenceMapping(), System.s, System.Xml.Serialization.TypeMapping.TypeDesc, System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteArrayTypeCompare(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteMember(), System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString(), and System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteTypeCompare().

Referenced by System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteStructMethod().