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

◆ WriteDerivedSerializable()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteDerivedSerializable ( SerializableMapping head,
SerializableMapping mapping,
string source,
bool isWrappedAny )
inlineprivate

Definition at line 2847 of file XmlSerializationReaderCodeGen.cs.

2848 {
2849 if (mapping == null)
2850 {
2851 return;
2852 }
2853 for (SerializableMapping serializableMapping = mapping.DerivedMappings; serializableMapping != null; serializableMapping = serializableMapping.NextDerivedMapping)
2854 {
2855 base.Writer.Write("else if (tser == null");
2856 base.Writer.Write(" || ");
2857 WriteQNameEqual("tser", serializableMapping.XsiType.Name, serializableMapping.XsiType.Namespace);
2858 base.Writer.WriteLine(") {");
2859 base.Writer.Indent++;
2860 if (serializableMapping.Type != null)
2861 {
2862 if (head.Type.IsAssignableFrom(serializableMapping.Type))
2863 {
2864 WriteSourceBeginTyped(source, head.TypeDesc);
2865 base.Writer.Write("ReadSerializable(( ");
2866 base.Writer.Write(typeof(IXmlSerializable).FullName);
2867 base.Writer.Write(")");
2868 base.Writer.Write(base.RaCodeGen.GetStringForCreateInstance(serializableMapping.TypeDesc.CSharpName, serializableMapping.TypeDesc.UseReflection, serializableMapping.TypeDesc.CannotNew, cast: false));
2869 if (isWrappedAny)
2870 {
2871 base.Writer.WriteLine(", true");
2872 }
2873 base.Writer.Write(")");
2875 base.Writer.WriteLine(";");
2876 }
2877 else
2878 {
2879 base.Writer.Write("throw CreateBadDerivationException(");
2881 base.Writer.Write(", ");
2883 base.Writer.Write(", ");
2884 WriteQuotedCSharpString(head.XsiType.Name);
2885 base.Writer.Write(", ");
2886 WriteQuotedCSharpString(head.XsiType.Namespace);
2887 base.Writer.Write(", ");
2889 base.Writer.Write(", ");
2890 WriteQuotedCSharpString(head.Type.FullName);
2891 base.Writer.WriteLine(");");
2892 }
2893 }
2894 else
2895 {
2896 base.Writer.WriteLine("// missing real mapping for " + serializableMapping.XsiType);
2897 base.Writer.Write("throw CreateMissingIXmlSerializableType(");
2899 base.Writer.Write(", ");
2901 base.Writer.Write(", ");
2902 WriteQuotedCSharpString(head.Type.FullName);
2903 base.Writer.WriteLine(");");
2904 }
2905 base.Writer.Indent--;
2906 base.Writer.WriteLine("}");
2908 }
2909 }
void WriteDerivedSerializable(SerializableMapping head, SerializableMapping mapping, string source, bool isWrappedAny)

References System.Xml.Dictionary, System.Type.FullName, System.FullName, System.Type.IsAssignableFrom(), System.Xml.XmlQualifiedName.Name, System.Xml.XmlQualifiedName.Namespace, System.source, System.Xml.Serialization.SerializableMapping.Type, System.Xml.Serialization.TypeMapping.TypeDesc, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteDerivedSerializable(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteQNameEqual(), System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceBeginTyped(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceEnd(), and System.Xml.Serialization.SerializableMapping.XsiType.

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteDerivedSerializable(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteElement().