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

◆ ReflectionWriteCollection()

void System.Runtime.Serialization.Json.ReflectionJsonFormatWriter.ReflectionWriteCollection ( XmlWriterDelegator xmlWriter,
object obj,
XmlObjectSerializerWriteContextComplexJson context,
CollectionDataContract collectionContract )
inline

Definition at line 18 of file ReflectionJsonFormatWriter.cs.

19 {
20 if (!(xmlWriter is JsonWriterDelegator jsonWriterDelegator))
21 {
22 throw new ArgumentException("xmlWriter");
23 }
24 XmlDictionaryString collectionItemName = context.CollectionItemName;
25 if (collectionContract.Kind == CollectionKind.Array)
26 {
27 context.IncrementArrayCount(jsonWriterDelegator, (Array)obj);
30 {
33 PrimitiveDataContract primitiveDataContract = PrimitiveDataContract.GetPrimitiveDataContract(itemType);
34 for (int i = 0; i < array.Length; i++)
35 {
39 }
40 }
41 return;
42 }
43 collectionContract.IncrementCollectionCount(jsonWriterDelegator, obj, context);
44 IEnumerator enumeratorForCollection = collectionContract.GetEnumeratorForCollection(obj);
45 bool flag = collectionContract.Kind == CollectionKind.GenericDictionary || collectionContract.Kind == CollectionKind.Dictionary;
46 bool useSimpleDictionaryFormat = context.UseSimpleDictionaryFormat;
47 if (flag && useSimpleDictionaryFormat)
48 {
50 Type[] genericArguments = collectionContract.ItemType.GetGenericArguments();
52 while (enumeratorForCollection.MoveNext())
53 {
54 object current = enumeratorForCollection.Current;
55 object key = ((IKeyValue)current).Key;
56 object value = ((IKeyValue)current).Value;
60 }
61 return;
62 }
64 PrimitiveDataContract primitiveDataContract2 = PrimitiveDataContract.GetPrimitiveDataContract(collectionContract.UnderlyingType);
65 if (primitiveDataContract2 != null && primitiveDataContract2.UnderlyingType != Globals.TypeOfObject)
66 {
67 while (enumeratorForCollection.MoveNext())
68 {
69 object current2 = enumeratorForCollection.Current;
70 context.IncrementItemCount(1);
72 }
73 return;
74 }
75 Type collectionElementType = collectionContract.GetCollectionElementType();
76 bool flag2 = collectionContract.Kind == CollectionKind.Dictionary || collectionContract.Kind == CollectionKind.GenericDictionary;
77 DataContract dataContract = null;
78 JsonDataContract jsonDataContract = null;
79 if (flag2)
80 {
81 dataContract = XmlObjectSerializerWriteContextComplexJson.GetRevisedItemContract(collectionContract.ItemContract);
82 jsonDataContract = JsonDataContract.GetJsonDataContract(dataContract);
83 }
84 while (enumeratorForCollection.MoveNext())
85 {
86 object current3 = enumeratorForCollection.Current;
87 context.IncrementItemCount(1);
89 if (flag2)
90 {
91 jsonDataContract.WriteJsonValue(jsonWriterDelegator, current3, context, collectionContract.ItemType.TypeHandle);
92 }
93 else
94 {
96 }
98 }
99 }
void ReflectionWriteStartElement(XmlWriterDelegator xmlWriter, XmlDictionaryString name)
bool ReflectionTryWritePrimitiveArray(JsonWriterDelegator jsonWriter, object obj, Type underlyingType, Type itemType, XmlDictionaryString collectionItemName)
void ReflectionWriteValue(XmlWriterDelegator xmlWriter, XmlObjectSerializerWriteContext context, Type type, object value, bool writeXsiType, PrimitiveDataContract primitiveContractForParamType)

References System.Runtime.Serialization.Json.ReflectionJsonFormatWriter._reflectionClassWriter, System.Xml.ArgumentException, System.array, System.Runtime.Serialization.Array, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.CollectionItemName, System.Runtime.Serialization.Dictionary, System.Type.GetGenericArguments(), System.Runtime.Serialization.Json.JsonDataContract.GetJsonDataContract(), System.Runtime.Serialization.PrimitiveDataContract.GetPrimitiveDataContract(), System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.GetRevisedItemContract(), System.Runtime.Serialization.XmlObjectSerializerWriteContext.IncrementArrayCount(), System.Runtime.Serialization.XmlObjectSerializerContext.IncrementItemCount(), System.key, System.obj, System.Runtime.Serialization.Json.ReflectionJsonFormatWriter.ReflectionTryWritePrimitiveArray(), System.Runtime.Serialization.Json.ReflectionJsonFormatWriter.ReflectionWriteArrayAttribute(), System.Runtime.Serialization.Json.ReflectionJsonClassWriter.ReflectionWriteEndElement(), System.Runtime.Serialization.Json.ReflectionJsonFormatWriter.ReflectionWriteObjectAttribute(), System.Runtime.Serialization.Json.ReflectionJsonClassWriter.ReflectionWriteStartElement(), System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteValue(), System.type, System.Runtime.Serialization.Globals.TypeOfObject, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.UseSimpleDictionaryFormat, and System.value.