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

◆ WriteAttributes()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteAttributes ( Member[] members,
Member anyAttribute,
string elseCall,
string firstParam )
inlineprivate

Definition at line 1711 of file XmlSerializationReaderCodeGen.cs.

1712 {
1713 int num = 0;
1714 Member member = null;
1716 base.Writer.WriteLine("while (Reader.MoveToNextAttribute()) {");
1717 base.Writer.Indent++;
1718 foreach (Member member2 in members)
1719 {
1720 if (member2.Mapping.Xmlns != null)
1721 {
1722 member = member2;
1723 }
1724 else
1725 {
1726 if (member2.Mapping.Ignore)
1727 {
1728 continue;
1729 }
1730 AttributeAccessor attribute = member2.Mapping.Attribute;
1731 if (attribute != null && !attribute.Any)
1732 {
1734 if (num++ > 0)
1735 {
1736 base.Writer.Write("else ");
1737 }
1738 base.Writer.Write("if (");
1739 if (member2.ParamsReadSource != null)
1740 {
1741 base.Writer.Write("!");
1742 base.Writer.Write(member2.ParamsReadSource);
1743 base.Writer.Write(" && ");
1744 }
1745 if (attribute.IsSpecialXmlNamespace)
1746 {
1747 WriteXmlNodeEqual("Reader", attribute.Name, "http://www.w3.org/XML/1998/namespace");
1748 }
1749 else
1750 {
1751 WriteXmlNodeEqual("Reader", attribute.Name, (attribute.Form == XmlSchemaForm.Qualified) ? attribute.Namespace : "");
1752 }
1753 base.Writer.WriteLine(") {");
1754 base.Writer.Indent++;
1756 base.Writer.Indent--;
1757 base.Writer.WriteLine("}");
1758 }
1759 }
1760 }
1761 if (num > 0)
1762 {
1763 base.Writer.Write("else ");
1764 }
1765 if (member != null)
1766 {
1767 base.Writer.WriteLine("if (IsXmlnsAttribute(Reader.Name)) {");
1768 base.Writer.Indent++;
1769 base.Writer.Write("if (");
1770 base.Writer.Write(member.Source);
1771 base.Writer.Write(" == null) ");
1772 base.Writer.Write(member.Source);
1773 base.Writer.Write(" = new ");
1774 base.Writer.Write(member.Mapping.TypeDesc.CSharpName);
1775 base.Writer.WriteLine("();");
1776 base.Writer.Write("((" + member.Mapping.TypeDesc.CSharpName + ")" + member.ArraySource + ")");
1777 base.Writer.WriteLine(".Add(Reader.Name.Length == 5 ? \"\" : Reader.LocalName, Reader.Value);");
1778 base.Writer.Indent--;
1779 base.Writer.WriteLine("}");
1780 base.Writer.WriteLine("else {");
1781 base.Writer.Indent++;
1782 }
1783 else
1784 {
1785 base.Writer.WriteLine("if (!IsXmlnsAttribute(Reader.Name)) {");
1786 base.Writer.Indent++;
1787 }
1788 if (anyAttribute != null)
1789 {
1790 base.Writer.Write(typeof(XmlAttribute).FullName);
1791 base.Writer.Write(" attr = ");
1792 base.Writer.Write("(");
1793 base.Writer.Write(typeof(XmlAttribute).FullName);
1794 base.Writer.WriteLine(") Document.ReadNode(Reader);");
1795 base.Writer.WriteLine("ParseWsdlArrayType(attr);");
1797 }
1798 else
1799 {
1800 base.Writer.Write(elseCall);
1801 base.Writer.Write("(");
1802 base.Writer.Write(firstParam);
1803 if (arrayList.Count > 0)
1804 {
1805 base.Writer.Write(", ");
1806 string text = "";
1807 for (int j = 0; j < arrayList.Count; j++)
1808 {
1809 AttributeAccessor attributeAccessor = (AttributeAccessor)arrayList[j];
1810 if (j > 0)
1811 {
1812 text += ", ";
1813 }
1814 text += (attributeAccessor.IsSpecialXmlNamespace ? "http://www.w3.org/XML/1998/namespace" : (((attributeAccessor.Form == XmlSchemaForm.Qualified) ? attributeAccessor.Namespace : "") + ":" + attributeAccessor.Name));
1815 }
1817 }
1818 base.Writer.WriteLine(");");
1819 }
1820 base.Writer.Indent--;
1821 base.Writer.WriteLine("}");
1822 base.Writer.Indent--;
1823 base.Writer.WriteLine("}");
1824 }
void Add(TKey key, TValue value)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.ArraySource, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Xml.Serialization.TypeDesc.CSharpName, System.Xml.Dictionary, System.FullName, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.Mapping, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.Source, System.text, System.Xml.Serialization.AccessorMapping.TypeDesc, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteAttribute(), System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteXmlNodeEqual().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateLiteralMembersElement(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteEncodedStructMethod(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteLiteralStructMethod().