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

◆ WriteEncodedStructMethod()

object System.Xml.Serialization.ReflectionXmlSerializationReader.WriteEncodedStructMethod ( StructMapping structMapping)
inlineprivate

Definition at line 1186 of file ReflectionXmlSerializationReader.cs.

1187 {
1188 if (structMapping.TypeDesc.IsRoot)
1189 {
1190 return null;
1191 }
1192 Member[] array = null;
1193 if (structMapping.TypeDesc.IsAbstract)
1194 {
1195 throw CreateAbstractTypeException(structMapping.TypeName, structMapping.Namespace);
1196 }
1197 object o = ReflectionCreateObject(structMapping.TypeDesc.Type);
1198 MemberMapping[] settableMembers = TypeScope.GetSettableMembers(structMapping);
1199 array = new Member[settableMembers.Length];
1200 for (int i = 0; i < settableMembers.Length; i++)
1201 {
1202 MemberMapping mapping = settableMembers[i];
1203 Member member = new Member(mapping);
1204 TypeDesc typeDesc = member.Mapping.TypeDesc;
1205 if (typeDesc.IsCollection || typeDesc.IsEnumerable)
1206 {
1207 member.Source = Wrapper;
1208 }
1209 else if (!member.Mapping.ReadOnly)
1210 {
1212 member.Source = delegate(object value)
1213 {
1215 };
1216 }
1217 else
1218 {
1220 }
1221 array[i] = member;
1222 [RequiresUnreferencedCode("Calls WriteAddCollectionFixup")]
1223 void Wrapper(object value)
1224 {
1226 }
1227 }
1230 {
1231 UnknownNode(o);
1232 };
1234 base.Reader.MoveToElement();
1235 if (base.Reader.IsEmptyElement)
1236 {
1237 base.Reader.Skip();
1238 return o;
1239 }
1240 base.Reader.ReadStartElement();
1241 base.Reader.MoveToContent();
1242 while (base.Reader.NodeType != XmlNodeType.EndElement && base.Reader.NodeType != 0)
1243 {
1244 WriteMemberElements(array, base.UnknownNode, base.UnknownNode, null, null, fixup);
1245 base.Reader.MoveToContent();
1246 }
1248 return o;
1249 }
static ReflectionXmlSerializationReaderHelper.SetMemberValueDelegate GetSetMemberValueDelegate(object o, string memberName)
object ReflectionCreateObject([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors|DynamicallyAccessedMemberTypes.PublicMethods|DynamicallyAccessedMemberTypes.NonPublicMethods)] Type type)
void WriteAddCollectionFixup(object o, Member member, object memberValue)
void WriteAttributes(Member[] members, Member anyAttribute, UnknownNodeAction elseCall, ref object o)
void WriteMemberElements(Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Fixup fixup=null, List< CheckTypeSource > checkTypeHrefsSource=null)
Exception CreateAbstractTypeException(string name, string? ns)
delegate void UnknownNodeAction(object o)

References System.array, System.Xml.Serialization.XmlSerializationReader.CreateAbstractTypeException(), System.Xml.Dictionary, System.Xml.Serialization.ReflectionXmlSerializationReader.GetSetMemberValueDelegate(), System.Xml.Serialization.TypeScope.GetSettableMembers(), System.Xml.Serialization.ReflectionXmlSerializationReader.Member.Mapping, System.Xml.Serialization.MemberMapping.MemberInfo, System.Reflection.MemberInfo.Name, System.Xml.Serialization.ReflectionXmlSerializationReader.NoopAction(), System.Xml.Serialization.XmlSerializationReader.ReadEndElement(), System.Xml.Serialization.MemberMapping.ReadOnly, System.Xml.Serialization.ReflectionXmlSerializationReader.ReflectionCreateObject(), System.Xml.Serialization.AccessorMapping.TypeDesc, System.Xml.Serialization.XmlSerializationReader.UnknownNode(), System.Xml.Serialization.UnknownNodeAction(), System.value, System.Xml.Serialization.ReflectionXmlSerializationReader.WriteAddCollectionFixup(), System.Xml.Serialization.ReflectionXmlSerializationReader.WriteAttributes(), System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElements(), and System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberFixupBegin().

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