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

◆ WriteNullableMethod()

void System.Xml.Serialization.XmlSerializationReaderILGen.WriteNullableMethod ( NullableMapping nullableMapping)
inlineprivate

Definition at line 1089 of file XmlSerializationReaderILGen.cs.

1090 {
1092 ilg = new CodeGenerator(typeBuilder);
1093 ilg.BeginMethod(nullableMapping.TypeDesc.Type, GetMethodBuilder(value), new Type[1] { typeof(bool) }, new string[1] { "checkType" }, MethodAttributes.Private | MethodAttributes.HideBySig);
1096 ilg.InitObj(nullableMapping.TypeDesc.Type);
1097 MethodInfo method = typeof(XmlSerializationReader).GetMethod("ReadNull", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1098 ilg.Ldarg(0);
1099 ilg.Call(method);
1100 ilg.If();
1104 ilg.EndIf();
1105 ElementAccessor elementAccessor = new ElementAccessor();
1107 elementAccessor.Any = false;
1108 elementAccessor.IsNullable = nullableMapping.BaseMapping.TypeDesc.IsNullable;
1109 WriteElement("o", null, null, elementAccessor, null, null, checkForNull: false, readOnly: false, -1, -1);
1115 ilg.EndMethod();
1116 }
bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
LocalBuilder DeclareLocal(Type type, string name)
void BeginMethod(Type returnType, string methodName, Type[] argTypes, string[] argNames, MethodAttributes methodAttributes)
void Call(MethodInfo methodInfo)
void Stloc(Type type, string name)
void Ldloc(LocalBuilder localBuilder)
MethodBuilderInfo GetMethodBuilder(string methodName)
void WriteElement(string source, string arrayName, string choiceSource, ElementAccessor element, ChoiceIdentifierAccessor choice, string checkSpecified, bool checkForNull, bool readOnly, int fixupIndex, int elementIndex)

References System.Xml.Serialization.CodeGenerator.BeginMethod(), System.Xml.Serialization.CodeGenerator.Br(), System.Xml.Serialization.CodeGenerator.Call(), System.Xml.Serialization.CodeGenerator.DeclareLocal(), System.Xml.Dictionary, System.Type.EmptyTypes, System.Xml.Serialization.CodeGenerator.EndIf(), System.Xml.Serialization.CodeGenerator.EndMethod(), System.Xml.Serialization.XmlSerializationILGen.GetMethodBuilder(), System.Xml.Serialization.CodeGenerator.If(), System.Xml.Serialization.XmlSerializationILGen.ilg, System.Xml.Serialization.CodeGenerator.InitObj(), System.Xml.Serialization.CodeGenerator.Ldarg(), System.Xml.Serialization.CodeGenerator.Ldloc(), System.Xml.Serialization.CodeGenerator.LoadAddress(), System.Xml.Serialization.CodeGenerator.MarkLabel(), System.Xml.Serialization.CodeGenerator.ReturnLabel, System.Xml.Serialization.CodeGenerator.ReturnLocal, System.Xml.Serialization.CodeGenerator.Stloc(), System.Collections.Generic.Dictionary< TKey, TValue >.TryGetValue(), System.Xml.Serialization.XmlSerializationILGen.typeBuilder, System.value, and System.Xml.Serialization.XmlSerializationReaderILGen.WriteElement().

Referenced by System.Xml.Serialization.XmlSerializationReaderILGen.GenerateMethod().