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

◆ InternalWriteObjectContent() [2/2]

void System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent ( XmlWriterDelegator writer,
object graph,
DataContractResolver dataContractResolver )
inlinepackage

Definition at line 325 of file DataContractSerializer.cs.

326 {
327 if (MaxItemsInObjectGraph == 0)
328 {
329 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.ExceededMaxItemsQuota, MaxItemsInObjectGraph)));
330 }
331 DataContract rootContract = RootContract;
332 Type underlyingType = rootContract.UnderlyingType;
333 Type objType = ((graph == null) ? underlyingType : graph.GetType());
335 {
337 }
338 if (dataContractResolver == null)
339 {
341 }
342 if (graph == null)
343 {
345 {
346 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.IsAnyCannotBeNull, underlyingType)));
347 }
348 XmlObjectSerializer.WriteNull(writer);
349 return;
350 }
351 if (underlyingType == objType)
352 {
353 if (rootContract.CanContainReferences)
354 {
355 XmlObjectSerializerWriteContext xmlObjectSerializerWriteContext = XmlObjectSerializerWriteContext.CreateContext(this, rootContract, dataContractResolver);
357 xmlObjectSerializerWriteContext.SerializeWithoutXsiType(rootContract, writer, graph, underlyingType.TypeHandle);
358 }
359 else
360 {
361 rootContract.WriteXmlValue(writer, graph, null);
362 }
363 return;
364 }
365 XmlObjectSerializerWriteContext xmlObjectSerializerWriteContext2 = null;
367 {
368 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.IsAnyCannotBeSerializedAsDerivedType, objType, rootContract.UnderlyingType)));
369 }
371 xmlObjectSerializerWriteContext2 = XmlObjectSerializerWriteContext.CreateContext(this, RootContract, dataContractResolver);
372 if (rootContract.CanContainReferences)
373 {
375 }
377 xmlObjectSerializerWriteContext2.SerializeWithXsiTypeAtTopLevel(rootContract, writer, graph, underlyingType.TypeHandle, objType);
378 }
static object SurrogateToDataContractType(ISerializationSurrogateProvider serializationSurrogateProvider, object oldObj, Type surrogatedDeclaredType, ref Type objType)
static DataContract GetDataContract(DataContract declaredTypeContract, Type declaredType, Type objectType)
ISerializationSurrogateProvider _serializationSurrogateProvider
bool IsRootXmlAny(XmlDictionaryString rootName, DataContract contract)
static string IsAnyCannotBeSerializedAsDerivedType
Definition SR.cs:172
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string ExceededMaxItemsQuota
Definition SR.cs:102
static string IsAnyCannotBeNull
Definition SR.cs:170
Definition SR.cs:7

References System.Runtime.Serialization.DataContractSerializer._rootName, System.Runtime.Serialization.DataContractSerializer._serializationSurrogateProvider, System.Runtime.Serialization.XmlObjectSerializerWriteContext.CreateContext(), System.Runtime.Serialization.XmlObjectSerializer.CreateSerializationException(), System.Runtime.Serialization.DataContractSerializer.DataContractResolver, System.SR.ExceededMaxItemsQuota, System.SR.Format(), System.Runtime.Serialization.DataContractSerializer.GetDataContract(), System.SR.IsAnyCannotBeNull, System.SR.IsAnyCannotBeSerializedAsDerivedType, System.Runtime.Serialization.XmlObjectSerializer.IsRootXmlAny(), System.Runtime.Serialization.DataContractSerializer.MaxItemsInObjectGraph, System.Runtime.Serialization.DataContractSerializer.RootContract, System.Runtime.Serialization.DataContractSerializer.SurrogateToDataContractType(), System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(), System.Runtime.Serialization.XmlObjectSerializer.WriteNull(), and System.writer.