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

◆ WriteArray()

object System.Xml.Serialization.ReflectionXmlSerializationReader.WriteArray ( ArrayMapping arrayMapping,
bool readOnly,
bool isNullable,
string defaultNamespace,
int fixupIndex = -1,
Fixup fixup = null,
Member member = null )
inlineprivate

Definition at line 979 of file ReflectionXmlSerializationReader.cs.

980 {
981 object collection = null;
982 if (arrayMapping.IsSoap)
983 {
984 object obj = ((fixupIndex < 0) ? ReadReferencedElement(arrayMapping.TypeName, arrayMapping.Namespace) : ReadReferencingElement(arrayMapping.TypeName, arrayMapping.Namespace, out fixup.Ids[fixupIndex]));
985 TypeDesc typeDesc = arrayMapping.TypeDesc;
986 if (obj != null)
987 {
988 if (typeDesc.IsEnumerable || typeDesc.IsCollection)
989 {
990 WriteAddCollectionFixup(member.GetSource, member.Source, obj, typeDesc, readOnly);
992 }
993 else
994 {
995 if (member == null)
996 {
998 }
999 member.Source(obj);
1000 }
1001 }
1002 collection = obj;
1003 }
1004 else if (!ReadNull())
1005 {
1006 MemberMapping memberMapping = new MemberMapping
1007 {
1008 Elements = arrayMapping.Elements,
1009 TypeDesc = arrayMapping.TypeDesc,
1011 };
1012 Type type = memberMapping.TypeDesc.Type;
1014 if (memberMapping.ChoiceIdentifier != null)
1015 {
1016 throw new NotImplementedException("memberMapping.ChoiceIdentifier != null");
1017 }
1019 arrayMember.Collection = new CollectionMember();
1021 {
1022 arrayMember.Collection.Add(item);
1023 };
1024 if ((readOnly && collection == null) || base.Reader.IsEmptyElement)
1025 {
1026 base.Reader.Skip();
1027 }
1028 else
1029 {
1030 base.Reader.ReadStartElement();
1031 base.Reader.MoveToContent();
1032 while (base.Reader.NodeType != XmlNodeType.EndElement && base.Reader.NodeType != 0)
1033 {
1034 WriteMemberElements(new Member[1] { arrayMember }, base.UnknownNode, base.UnknownNode, null, null);
1035 base.Reader.MoveToContent();
1036 }
1038 }
1040 }
1041 return collection;
1042 }
void Add(TKey key, TValue value)
static string XmlInternalError
Definition SR.cs:1812
Definition SR.cs:7
void SetCollectionObjectWithCollectionMember([NotNull] ref object collection, CollectionMember collectionMember, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors|DynamicallyAccessedMemberTypes.PublicMethods|DynamicallyAccessedMemberTypes.NonPublicMethods)] Type collectionType)
object ReflectionCreateObject([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors|DynamicallyAccessedMemberTypes.PublicMethods|DynamicallyAccessedMemberTypes.NonPublicMethods)] Type type)
void WriteAddCollectionFixup(object o, Member member, object memberValue)
void WriteMemberElements(Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Fixup fixup=null, List< CheckTypeSource > checkTypeHrefsSource=null)
object? ReadReferencingElement(out string? fixupReference)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.collection, System.Xml.Dictionary, System.item, System.Xml.Serialization.ReflectionXmlSerializationReader.NoopAction(), System.obj, System.Xml.Serialization.XmlSerializationReader.ReadEndElement(), System.Xml.Serialization.XmlSerializationReader.ReadNull(), System.Xml.Serialization.ReadOnly, System.Xml.Serialization.XmlSerializationReader.ReadReferencedElement(), System.Xml.Serialization.XmlSerializationReader.ReadReferencingElement(), System.Xml.Serialization.ReflectionXmlSerializationReader.ReflectionCreateObject(), System.Xml.Serialization.ReflectionXmlSerializationReader.SetCollectionObjectWithCollectionMember(), System.type, System.Xml.Serialization.ReflectionXmlSerializationReader.WriteAddCollectionFixup(), System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElements(), and System.SR.XmlInternalError.

Referenced by System.Xml.Serialization.ReflectionXmlSerializationReader.WriteElement(), and System.Xml.Serialization.ReflectionXmlSerializationReader.WriteEnumAndArrayTypes().