Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ WriteSerializationInfo()

void System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteSerializationInfo ( XmlWriterDelegator xmlWriter,
Type objType,
SerializationInfo serInfo )
inlinepackageinherited

Definition at line 532 of file XmlObjectSerializerWriteContext.cs.

533 {
534 if (DataContract.GetClrTypeFullName(objType) != serInfo.FullTypeName)
535 {
536 if (base.DataContractResolver != null)
537 {
538 if (ResolveType(serInfo.ObjectType, objType, out var typeName, out var typeNamespace))
539 {
540 xmlWriter.WriteAttributeQualifiedName("z", DictionaryGlobals.ISerializableFactoryTypeLocalName, DictionaryGlobals.SerializationNamespace, typeName, typeNamespace);
541 }
542 }
543 else
544 {
545 DataContract.GetDefaultStableName(serInfo.FullTypeName, out var localName, out var ns);
546 xmlWriter.WriteAttributeQualifiedName("z", DictionaryGlobals.ISerializableFactoryTypeLocalName, DictionaryGlobals.SerializationNamespace, DataContract.GetClrTypeString(localName), DataContract.GetClrTypeString(ns));
547 }
548 }
550 IncrementItemCount(serInfo.MemberCount);
551 SerializationInfoEnumerator enumerator = serInfo.GetEnumerator();
552 while (enumerator.MoveNext())
553 {
554 SerializationEntry current = enumerator.Current;
555 XmlDictionaryString clrTypeString = DataContract.GetClrTypeString(DataContract.EncodeLocalName(current.Name));
556 xmlWriter.WriteStartElement(clrTypeString, DictionaryGlobals.EmptyString);
557 object value = current.Value;
558 if (value == null)
559 {
561 }
562 else
563 {
565 }
566 xmlWriter.WriteEndElement();
567 }
568 }
void WriteNull(XmlWriterDelegator xmlWriter, Type memberType, bool isMemberTypeSerializable)
virtual bool WriteClrTypeInfo(XmlWriterDelegator xmlWriter, DataContract dataContract)
bool ResolveType(Type objectType, Type declaredType, [NotNullWhen(true)] out XmlDictionaryString typeName, [NotNullWhen(true)] out XmlDictionaryString typeNamespace)
void InternalSerializeReference(XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, RuntimeTypeHandle declaredTypeHandle)

References System.Runtime.Serialization.Dictionary, System.Runtime.Serialization.DictionaryGlobals.EmptyString, System.Runtime.Serialization.DataContract.EncodeLocalName(), System.Runtime.Serialization.DataContract.GetClrTypeFullName(), System.Runtime.Serialization.DataContract.GetClrTypeString(), System.Runtime.Serialization.DataContract.GetDefaultStableName(), System.Collections.Generic.Dictionary< TKey, TValue >.GetEnumerator(), System.Runtime.Serialization.XmlObjectSerializerContext.IncrementItemCount(), System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(), System.Runtime.Serialization.DictionaryGlobals.ISerializableFactoryTypeLocalName, System.Runtime.Serialization.SerializationEntry.Name, System.Runtime.Serialization.XmlObjectSerializerWriteContext.ResolveType(), System.Runtime.Serialization.DictionaryGlobals.SerializationNamespace, System.Runtime.Serialization.Globals.TypeOfObject, System.Runtime.Serialization.SerializationEntry.Value, System.value, System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteClrTypeInfo(), and System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteNull().

Referenced by System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteISerializable(), System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteJsonISerializable(), and System.Runtime.Serialization.SurrogateDataContract.WriteXmlValue().