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

◆ WriteArray()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteArray ( string source,
string arrayName,
ArrayMapping arrayMapping,
bool readOnly,
bool isNullable,
int fixupIndex )
inlineprivate

Definition at line 2522 of file XmlSerializationReaderCodeGen.cs.

2523 {
2524 if (arrayMapping.IsSoap)
2525 {
2526 base.Writer.Write("object rre = ");
2527 base.Writer.Write((fixupIndex >= 0) ? "ReadReferencingElement" : "ReadReferencedElement");
2528 base.Writer.Write("(");
2529 WriteID(arrayMapping.TypeName);
2530 base.Writer.Write(", ");
2531 WriteID(arrayMapping.Namespace);
2532 if (fixupIndex >= 0)
2533 {
2534 base.Writer.Write(", ");
2535 base.Writer.Write("out fixup.Ids[");
2536 base.Writer.Write(fixupIndex.ToString(CultureInfo.InvariantCulture));
2537 base.Writer.Write("]");
2538 }
2539 base.Writer.WriteLine(");");
2540 TypeDesc typeDesc = arrayMapping.TypeDesc;
2541 if (typeDesc.IsEnumerable || typeDesc.IsCollection)
2542 {
2543 base.Writer.WriteLine("if (rre != null) {");
2544 base.Writer.Indent++;
2546 base.Writer.Indent--;
2547 base.Writer.WriteLine("}");
2548 }
2549 else
2550 {
2551 base.Writer.WriteLine("try {");
2552 base.Writer.Indent++;
2554 base.Writer.Write("rre");
2556 base.Writer.WriteLine(";");
2557 WriteCatchCastException(arrayMapping.TypeDesc, "rre", null);
2558 }
2559 return;
2560 }
2561 base.Writer.WriteLine("if (!ReadNull()) {");
2562 base.Writer.Indent++;
2563 MemberMapping memberMapping = new MemberMapping();
2567 Member member = new Member(this, source, arrayName, 0, memberMapping, multiRef: false);
2568 member.IsNullable = false;
2569 Member[] members = new Member[1] { member };
2571 if (readOnly)
2572 {
2573 base.Writer.Write("if (((object)(");
2574 base.Writer.Write(member.ArrayName);
2575 base.Writer.Write(") == null) || ");
2576 }
2577 else
2578 {
2579 base.Writer.Write("if (");
2580 }
2581 base.Writer.WriteLine("(Reader.IsEmptyElement)) {");
2582 base.Writer.Indent++;
2583 base.Writer.WriteLine("Reader.Skip();");
2584 base.Writer.Indent--;
2585 base.Writer.WriteLine("}");
2586 base.Writer.WriteLine("else {");
2587 base.Writer.Indent++;
2588 base.Writer.WriteLine("Reader.ReadStartElement();");
2590 base.Writer.Indent++;
2591 string text = "UnknownNode(null, " + ExpectedElements(members) + ");";
2592 WriteMemberElements(members, text, text, null, null, null);
2593 base.Writer.WriteLine("Reader.MoveToContent();");
2595 base.Writer.Indent--;
2596 base.Writer.WriteLine("ReadEndElement();");
2597 base.Writer.WriteLine("}");
2599 base.Writer.Indent--;
2600 base.Writer.WriteLine("}");
2601 if (isNullable)
2602 {
2603 base.Writer.WriteLine("else {");
2604 base.Writer.Indent++;
2605 member.IsNullable = true;
2608 base.Writer.Indent--;
2609 base.Writer.WriteLine("}");
2610 }
2611 }
static CultureInfo InvariantCulture
void WriteAddCollectionFixup(TypeDesc typeDesc, bool readOnly, string memberSource, string targetSource)
void WriteMemberElements(Member[] members, string elementElseString, string elseString, Member anyElement, Member anyText, string checkTypeHrefsSource)
void WriteCatchCastException(TypeDesc typeDesc, string source, string id)

References System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.ArrayName, System.Xml.Dictionary, System.Xml.Serialization.XmlSerializationReaderCodeGen.ExpectedElements(), System.Globalization.CultureInfo.InvariantCulture, System.source, System.text, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteAddCollectionFixup(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteCatchCastException(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteID(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberBegin(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberElements(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberEnd(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceBeginTyped(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceEnd(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteWhileLoopEnd(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteWhileNotLoopStart().

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