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

◆ WriteEnumMethod()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteEnumMethod ( EnumMapping mapping)
inlineprivate

Definition at line 1003 of file XmlSerializationReaderCodeGen.cs.

1004 {
1005 string s = null;
1006 if (mapping.IsFlags)
1007 {
1008 s = WriteHashtable(mapping, mapping.TypeDesc.Name);
1009 }
1010 string s2 = (string)base.MethodNames[mapping];
1011 base.Writer.WriteLine();
1012 bool useReflection = mapping.TypeDesc.UseReflection;
1013 string cSharpName = mapping.TypeDesc.CSharpName;
1014 if (mapping.IsSoap)
1015 {
1016 base.Writer.Write("object");
1017 base.Writer.Write(" ");
1018 base.Writer.Write(s2);
1019 base.Writer.WriteLine("() {");
1020 base.Writer.Indent++;
1021 base.Writer.WriteLine("string s = Reader.ReadElementString();");
1022 }
1023 else
1024 {
1025 base.Writer.Write(useReflection ? "object" : cSharpName);
1026 base.Writer.Write(" ");
1027 base.Writer.Write(s2);
1028 base.Writer.WriteLine("(string s) {");
1029 base.Writer.Indent++;
1030 }
1031 ConstantMapping[] constants = mapping.Constants;
1032 if (mapping.IsFlags)
1033 {
1034 if (useReflection)
1035 {
1036 base.Writer.Write("return ");
1037 base.Writer.Write(typeof(Enum).FullName);
1038 base.Writer.Write(".ToObject(");
1039 base.Writer.Write(base.RaCodeGen.GetStringForTypeof(cSharpName, useReflection));
1040 base.Writer.Write(", ToEnum(s, ");
1041 base.Writer.Write(s);
1042 base.Writer.Write(", ");
1044 base.Writer.WriteLine("));");
1045 }
1046 else
1047 {
1048 base.Writer.Write("return (");
1049 base.Writer.Write(cSharpName);
1050 base.Writer.Write(")ToEnum(s, ");
1051 base.Writer.Write(s);
1052 base.Writer.Write(", ");
1054 base.Writer.WriteLine(");");
1055 }
1056 }
1057 else
1058 {
1059 base.Writer.WriteLine("switch (s) {");
1060 base.Writer.Indent++;
1061 Hashtable hashtable = new Hashtable();
1062 foreach (ConstantMapping constantMapping in constants)
1063 {
1064 CodeIdentifier.CheckValidIdentifier(constantMapping.Name);
1065 if (hashtable[constantMapping.XmlName] == null)
1066 {
1067 base.Writer.Write("case ");
1069 base.Writer.Write(": return ");
1070 base.Writer.Write(base.RaCodeGen.GetStringForEnumMember(cSharpName, constantMapping.Name, useReflection));
1071 base.Writer.WriteLine(";");
1072 hashtable[constantMapping.XmlName] = constantMapping.XmlName;
1073 }
1074 }
1075 base.Writer.Write("default: throw CreateUnknownConstantException(s, ");
1076 base.Writer.Write(base.RaCodeGen.GetStringForTypeof(cSharpName, useReflection));
1077 base.Writer.WriteLine(");");
1078 base.Writer.Indent--;
1079 base.Writer.WriteLine("}");
1080 }
1081 base.Writer.Indent--;
1082 base.Writer.WriteLine("}");
1083 }
string WriteHashtable(EnumMapping mapping, string typeName)

References System.Xml.Serialization.CodeIdentifier.CheckValidIdentifier(), System.Xml.Dictionary, System.s, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteHashtable(), and System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateBegin(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateMethod().