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

◆ WriteElement()

void System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteElement ( string source,
ElementAccessor element,
string arrayName,
bool writeAccessor )
inlineprivate

Definition at line 1654 of file XmlSerializationWriterCodeGen.cs.

1655 {
1656 string text = (writeAccessor ? element.Name : element.Mapping.TypeName);
1657 string text2 = ((element.Any && element.Name.Length == 0) ? null : ((element.Form != XmlSchemaForm.Qualified) ? "" : (writeAccessor ? element.Namespace : element.Mapping.Namespace)));
1658 if (element.Mapping is NullableMapping)
1659 {
1660 base.Writer.Write("if (");
1661 base.Writer.Write(source);
1662 base.Writer.WriteLine(" != null) {");
1663 base.Writer.Indent++;
1664 string cSharpName = element.Mapping.TypeDesc.BaseTypeDesc.CSharpName;
1665 string text3 = source;
1666 if (!element.Mapping.TypeDesc.BaseTypeDesc.UseReflection)
1667 {
1668 text3 = "((" + cSharpName + ")" + source + ")";
1669 }
1670 ElementAccessor elementAccessor = element.Clone();
1671 elementAccessor.Mapping = ((NullableMapping)element.Mapping).BaseMapping;
1673 base.Writer.Indent--;
1674 base.Writer.WriteLine("}");
1675 if (element.IsNullable)
1676 {
1677 base.Writer.WriteLine("else {");
1678 base.Writer.Indent++;
1679 WriteLiteralNullTag(element.Name, (element.Form == XmlSchemaForm.Qualified) ? element.Namespace : "");
1680 base.Writer.Indent--;
1681 base.Writer.WriteLine("}");
1682 }
1683 }
1684 else if (element.Mapping is ArrayMapping)
1685 {
1686 ArrayMapping arrayMapping = (ArrayMapping)element.Mapping;
1687 if (arrayMapping.IsSoap)
1688 {
1689 base.Writer.Write("WritePotentiallyReferencingElement(");
1691 base.Writer.Write(", ");
1693 base.Writer.Write(", ");
1694 base.Writer.Write(source);
1695 if (!writeAccessor)
1696 {
1697 base.Writer.Write(", ");
1698 base.Writer.Write(base.RaCodeGen.GetStringForTypeof(arrayMapping.TypeDesc.CSharpName, arrayMapping.TypeDesc.UseReflection));
1699 base.Writer.Write(", true, ");
1700 }
1701 else
1702 {
1703 base.Writer.Write(", null, false, ");
1704 }
1705 WriteValue(element.IsNullable);
1706 base.Writer.WriteLine(");");
1707 return;
1708 }
1709 if (element.IsUnbounded)
1710 {
1711 TypeDesc typeDesc = arrayMapping.TypeDesc.CreateArrayTypeDesc();
1712 string cSharpName2 = typeDesc.CSharpName;
1713 string text4 = "el" + arrayName;
1714 string text5 = "c" + text4;
1715 base.Writer.WriteLine("{");
1716 base.Writer.Indent++;
1718 if (element.IsNullable)
1719 {
1720 WriteNullCheckBegin(text4, element);
1721 }
1722 else
1723 {
1724 if (arrayMapping.TypeDesc.IsNullable)
1725 {
1726 base.Writer.Write("if (");
1727 base.Writer.Write(text4);
1728 base.Writer.Write(" != null)");
1729 }
1730 base.Writer.WriteLine("{");
1731 base.Writer.Indent++;
1732 }
1733 base.Writer.Write("for (int ");
1734 base.Writer.Write(text5);
1735 base.Writer.Write(" = 0; ");
1736 base.Writer.Write(text5);
1737 base.Writer.Write(" < ");
1738 if (typeDesc.IsArray)
1739 {
1740 base.Writer.Write(text4);
1741 base.Writer.Write(".Length");
1742 }
1743 else
1744 {
1745 base.Writer.Write("((");
1746 base.Writer.Write(typeof(ICollection).FullName);
1747 base.Writer.Write(")");
1748 base.Writer.Write(text4);
1749 base.Writer.Write(").Count");
1750 }
1751 base.Writer.Write("; ");
1752 base.Writer.Write(text5);
1753 base.Writer.WriteLine("++) {");
1754 base.Writer.Indent++;
1755 element.IsUnbounded = false;
1756 WriteElement(text4 + "[" + text5 + "]", element, arrayName, writeAccessor);
1757 element.IsUnbounded = true;
1758 base.Writer.Indent--;
1759 base.Writer.WriteLine("}");
1760 base.Writer.Indent--;
1761 base.Writer.WriteLine("}");
1762 base.Writer.Indent--;
1763 base.Writer.WriteLine("}");
1764 return;
1765 }
1766 string cSharpName3 = arrayMapping.TypeDesc.CSharpName;
1767 base.Writer.WriteLine("{");
1768 base.Writer.Indent++;
1770 if (element.IsNullable)
1771 {
1773 }
1774 else
1775 {
1776 if (arrayMapping.TypeDesc.IsNullable)
1777 {
1778 base.Writer.Write("if (");
1779 base.Writer.Write(arrayName);
1780 base.Writer.Write(" != null)");
1781 }
1782 base.Writer.WriteLine("{");
1783 base.Writer.Indent++;
1784 }
1786 WriteArrayItems(arrayMapping.ElementsSortedByDerivation, null, null, arrayMapping.TypeDesc, arrayName, null);
1788 base.Writer.Indent--;
1789 base.Writer.WriteLine("}");
1790 base.Writer.Indent--;
1791 base.Writer.WriteLine("}");
1792 }
1793 else if (element.Mapping is EnumMapping)
1794 {
1795 if (element.Mapping.IsSoap)
1796 {
1797 string s = (string)base.MethodNames[element.Mapping];
1798 base.Writer.Write("Writer.WriteStartElement(");
1800 base.Writer.Write(", ");
1802 base.Writer.WriteLine(");");
1803 base.Writer.Write(s);
1804 base.Writer.Write("(");
1805 base.Writer.Write(source);
1806 base.Writer.WriteLine(");");
1808 }
1809 else
1810 {
1811 WritePrimitive("WriteElementString", text, text2, element.Default, source, element.Mapping, writeXsiType: false, isElement: true, element.IsNullable);
1812 }
1813 }
1814 else if (element.Mapping is PrimitiveMapping)
1815 {
1816 PrimitiveMapping primitiveMapping = (PrimitiveMapping)element.Mapping;
1817 if (primitiveMapping.TypeDesc == base.QnameTypeDesc)
1818 {
1819 WriteQualifiedNameElement(text, text2, element.Default, source, element.IsNullable, primitiveMapping.IsSoap, primitiveMapping);
1820 return;
1821 }
1822 string text6 = (primitiveMapping.IsSoap ? "Encoded" : "Literal");
1824 WritePrimitive(element.IsNullable ? ("WriteNullableString" + text6 + text7) : ("WriteElementString" + text7), text, text2, element.Default, source, primitiveMapping, primitiveMapping.IsSoap, isElement: true, element.IsNullable);
1825 }
1826 else if (element.Mapping is StructMapping)
1827 {
1828 StructMapping structMapping = (StructMapping)element.Mapping;
1829 if (structMapping.IsSoap)
1830 {
1831 base.Writer.Write("WritePotentiallyReferencingElement(");
1833 base.Writer.Write(", ");
1835 base.Writer.Write(", ");
1836 base.Writer.Write(source);
1837 if (!writeAccessor)
1838 {
1839 base.Writer.Write(", ");
1840 base.Writer.Write(base.RaCodeGen.GetStringForTypeof(structMapping.TypeDesc.CSharpName, structMapping.TypeDesc.UseReflection));
1841 base.Writer.Write(", true, ");
1842 }
1843 else
1844 {
1845 base.Writer.Write(", null, false, ");
1846 }
1847 WriteValue(element.IsNullable);
1848 }
1849 else
1850 {
1852 base.Writer.Write(s2);
1853 base.Writer.Write("(");
1855 base.Writer.Write(", ");
1856 if (text2 == null)
1857 {
1858 base.Writer.Write("null");
1859 }
1860 else
1861 {
1863 }
1864 base.Writer.Write(", ");
1865 base.Writer.Write(source);
1866 if (structMapping.TypeDesc.IsNullable)
1867 {
1868 base.Writer.Write(", ");
1869 WriteValue(element.IsNullable);
1870 }
1871 base.Writer.Write(", false");
1872 }
1873 base.Writer.WriteLine(");");
1874 }
1875 else
1876 {
1877 if (!(element.Mapping is SpecialMapping))
1878 {
1880 }
1881 if (element.Mapping is SerializableMapping)
1882 {
1883 WriteElementCall("WriteSerializable", typeof(IXmlSerializable), source, text, text2, element.IsNullable, !element.Any);
1884 return;
1885 }
1886 base.Writer.Write("if ((");
1887 base.Writer.Write(source);
1888 base.Writer.Write(") is ");
1889 base.Writer.Write(typeof(XmlNode).FullName);
1890 base.Writer.Write(" || ");
1891 base.Writer.Write(source);
1892 base.Writer.Write(" == null");
1893 base.Writer.WriteLine(") {");
1894 base.Writer.Indent++;
1895 WriteElementCall("WriteElementLiteral", typeof(XmlNode), source, text, text2, element.IsNullable, element.Any);
1896 base.Writer.Indent--;
1897 base.Writer.WriteLine("}");
1898 base.Writer.WriteLine("else {");
1899 base.Writer.Indent++;
1900 base.Writer.Write("throw CreateInvalidAnyTypeException(");
1901 base.Writer.Write(source);
1902 base.Writer.WriteLine(");");
1903 base.Writer.Indent--;
1904 base.Writer.WriteLine("}");
1905 }
1906 }
static string XmlInternalError
Definition SR.cs:1812
Definition SR.cs:7
void WriteArrayLocalDecl(string typeName, string variableName, string initValue, TypeDesc arrayTypeDesc)
void WriteNullCheckBegin(string source, ElementAccessor element)
void WriteArrayItems(ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc arrayTypeDesc, string arrayName, string choiceName)
void WriteQualifiedNameElement(string name, string ns, object defaultValue, string source, bool nullable, bool IsSoap, TypeMapping mapping)
void WriteElementCall(string func, Type cast, string source, string name, string ns, bool isNullable, bool isAny)
void WriteElement(string source, ElementAccessor element, string arrayName, bool writeAccessor)
void WritePrimitive(string method, string name, string ns, object defaultValue, string source, TypeMapping mapping, bool writeXsiType, bool isElement, bool isNullable)
void WriteStartElement(string name, string ns, bool writePrefixed)

References System.Xml.Serialization.TypeDesc.TypeDesc(), System.Xml.Serialization.Accessor.Any, System.Xml.Serialization.TypeDesc.BaseTypeDesc, System.Xml.Serialization.ElementAccessor.Clone(), System.Xml.Serialization.TypeDesc.CSharpName, System.Xml.Serialization.Accessor.Default, System.Xml.Dictionary, System.Xml.Serialization.Accessor.Form, System.FullName, System.Xml.Serialization.ElementAccessor.IsNullable, System.Xml.Serialization.Mapping.IsSoap, System.Xml.Serialization.ElementAccessor.IsUnbounded, System.Xml.Serialization.Accessor.Mapping, System.Xml.Serialization.Accessor.Name, System.Xml.Serialization.Accessor.Namespace, System.Xml.Serialization.TypeMapping.Namespace, System.Xml.Serialization.XmlSerializationCodeGen.ReferenceMapping(), System.s, System.source, System.text, System.Xml.Serialization.TypeMapping.TypeDesc, System.Xml.Serialization.TypeMapping.TypeName, System.Xml.Serialization.TypeDesc.UseReflection, System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteArrayItems(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteArrayLocalDecl(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteElement(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteElementCall(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteEndElement(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteLiteralNullTag(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteNullCheckBegin(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WritePrimitive(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteQualifiedNameElement(), System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteStartElement(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteValue(), and System.SR.XmlInternalError.

Referenced by System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteElement(), and System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteElements().