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

◆ WriteCheckDefault()

void System.Xml.Serialization.XmlSerializationWriterILGen.WriteCheckDefault ( SourceInfo source,
object value,
bool isNullable )
inlineprivate

Definition at line 1795 of file XmlSerializationWriterILGen.cs.

1796 {
1797 if (value is string && ((string)value).Length == 0)
1798 {
1802 source.Load(typeof(string));
1803 if (isNullable)
1804 {
1806 }
1807 else
1808 {
1810 }
1811 MethodInfo method = typeof(string).GetMethod("get_Length", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1812 source.Load(typeof(string));
1813 ilg.Call(method);
1814 ilg.Ldc(0);
1815 ilg.Cne();
1816 ilg.Br(label);
1817 if (isNullable)
1818 {
1820 ilg.Ldc(boolVar: true);
1821 }
1822 else
1823 {
1825 ilg.Ldc(boolVar: false);
1826 }
1828 ilg.If();
1829 return;
1830 }
1831 if (value == null)
1832 {
1833 source.Load(typeof(object));
1834 ilg.Load(null);
1835 ilg.Cne();
1836 }
1837 else if (value.GetType().IsPrimitive)
1838 {
1839 source.Load(null);
1841 ilg.Cne();
1842 }
1843 else
1844 {
1845 Type type = value.GetType();
1846 source.Load(type);
1847 ilg.Ldc((value is string) ? GetCSharpString((string)value) : value);
1848 MethodInfo method2 = type.GetMethod("op_Inequality", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new Type[2] { type, type });
1849 if (method2 != null)
1850 {
1851 ilg.Call(method2);
1852 }
1853 else
1854 {
1855 ilg.Cne();
1856 }
1857 }
1858 ilg.If();
1859 }
static CultureInfo InvariantCulture
void Call(MethodInfo methodInfo)

References System.Xml.Serialization.CodeGenerator.Br(), System.Xml.Serialization.CodeGenerator.Brfalse(), System.Xml.Serialization.CodeGenerator.Call(), System.Convert.ChangeType(), System.Xml.Serialization.CodeGenerator.Cne(), System.Xml.Serialization.CodeGenerator.DefineLabel(), System.Xml.Dictionary, System.Type.EmptyTypes, System.Xml.Serialization.XmlSerializationILGen.GetCSharpString(), System.Type.GetType(), System.Xml.Serialization.CodeGenerator.If(), System.Xml.Serialization.XmlSerializationILGen.ilg, System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.CodeGenerator.Ldc(), System.Xml.Schema.Length, System.Xml.Serialization.CodeGenerator.Load(), System.Xml.Serialization.CodeGenerator.MarkLabel(), System.source, System.type, and System.value.

Referenced by System.Xml.Serialization.XmlSerializationWriterILGen.WritePrimitive().