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

◆ WriteLocalDecl()

void System.Xml.Serialization.ReflectionAwareILGen.WriteLocalDecl ( string variableName,
SourceInfo initValue )
inlinepackage

Definition at line 165 of file ReflectionAwareILGen.cs.

166 {
167 Type type = initValue.Type;
168 LocalBuilder localBuilder = initValue.ILG.DeclareOrGetLocal(type, variableName);
169 if (initValue.Source != null)
170 {
171 if (initValue == "null")
172 {
173 initValue.ILG.Load(null);
174 }
175 else if (initValue.Arg.StartsWith("o.@", StringComparison.Ordinal))
176 {
177 initValue.ILG.LoadMember(initValue.ILG.GetLocal("o"), initValue.MemberInfo);
178 }
179 else if (initValue.Source.EndsWith(']'))
180 {
181 initValue.Load(initValue.Type);
182 }
183 else if (initValue.Source == "fixup.Source" || initValue.Source == "e.Current")
184 {
185 string[] array = initValue.Source.Split('.');
186 object variable = initValue.ILG.GetVariable(array[0]);
187 PropertyInfo property = initValue.ILG.GetVariableType(variable).GetProperty(array[1]);
188 initValue.ILG.LoadMember(variable, property);
189 initValue.ILG.ConvertValue(property.PropertyType, localBuilder.LocalType);
190 }
191 else
192 {
193 object variable2 = initValue.ILG.GetVariable(initValue.Arg);
194 initValue.ILG.Load(variable2);
195 initValue.ILG.ConvertValue(initValue.ILG.GetVariableType(variable2), localBuilder.LocalType);
196 }
197 initValue.ILG.Stloc(localBuilder);
198 }
199 }

References System.array, and System.type.