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

◆ WriteAttribute()

void System.Xml.Serialization.ReflectionXmlSerializationReader.WriteAttribute ( Member member,
object attr = null )
inlineprivate

Definition at line 1716 of file ReflectionXmlSerializationReader.cs.

1717 {
1718 AttributeAccessor attribute = member.Mapping.Attribute;
1719 object obj = null;
1720 if (attribute.Mapping is SpecialMapping specialMapping)
1721 {
1722 if (specialMapping.TypeDesc.Kind != TypeKind.Attribute)
1723 {
1724 if (specialMapping.TypeDesc.CanBeAttributeValue)
1725 {
1726 throw new NotImplementedException("special.TypeDesc.CanBeAttributeValue");
1727 }
1729 }
1730 obj = attr;
1731 }
1732 else if (attribute.IsList)
1733 {
1734 string value = base.Reader.Value;
1735 string[] array = value.Split((char[]?)null);
1736 Array array2 = Array.CreateInstance(member.Mapping.TypeDesc.Type.GetElementType(), array.Length);
1737 int i;
1738 for (i = 0; i < array.Length; i++)
1739 {
1740 array2.SetValue(WritePrimitive(attribute.Mapping, (object state) => ((string[])state)[i], array), i);
1741 }
1742 obj = array2;
1743 }
1744 else
1745 {
1746 obj = WritePrimitive(attribute.Mapping, (object state) => ((XmlReader)state).Value, base.Reader);
1747 }
1748 member.Source(obj);
1749 if (member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite)
1750 {
1751 member.CheckSpecifiedSource?.Invoke(null);
1752 }
1753 }
static string XmlInternalError
Definition SR.cs:1812
Definition SR.cs:7
object WritePrimitive(TypeMapping mapping, Func< object, string > readFunc, object funcState)

References System.array, System.Xml.Serialization.AccessorMapping.Attribute, System.Xml.Serialization.MemberMapping.CheckSpecified, System.Xml.Serialization.ReflectionXmlSerializationReader.Member.CheckSpecifiedSource, System.Array.CreateInstance(), System.Xml.Dictionary, System.Type.GetElementType(), System.Xml.Serialization.ReflectionXmlSerializationReader.Member.Mapping, System.obj, System.Xml.Serialization.ReflectionXmlSerializationReader.Member.Source, System.state, System.Xml.Serialization.TypeDesc.Type, System.Xml.Serialization.AccessorMapping.TypeDesc, System.value, System.Xml.Serialization.ReflectionXmlSerializationReader.WritePrimitive(), and System.SR.XmlInternalError.

Referenced by System.Xml.Serialization.ReflectionXmlSerializationReader.WriteAttributes().