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

◆ WriteFixupMethod()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteFixupMethod ( string fixupMethodName,
Member[] members,
string typeName,
bool useReflection,
bool typed,
string source )
inlineprivate

Definition at line 1536 of file XmlSerializationReaderCodeGen.cs.

1537 {
1538 base.Writer.WriteLine();
1539 base.Writer.Write("void ");
1540 base.Writer.Write(fixupMethodName);
1541 base.Writer.WriteLine("(object objFixup) {");
1542 base.Writer.Indent++;
1543 base.Writer.WriteLine("Fixup fixup = (Fixup)objFixup;");
1544 WriteLocalDecl(typeName, source, "fixup.Source", useReflection);
1545 base.Writer.WriteLine("string[] ids = fixup.Ids;");
1546 foreach (Member member in members)
1547 {
1548 if (!member.MultiRef)
1549 {
1550 continue;
1551 }
1552 string text = member.FixupIndex.ToString(CultureInfo.InvariantCulture);
1553 base.Writer.Write("if (ids[");
1554 base.Writer.Write(text);
1555 base.Writer.WriteLine("] != null) {");
1556 base.Writer.Indent++;
1557 string arraySource = member.ArraySource;
1558 string text2 = "GetTarget(ids[" + text + "])";
1559 TypeDesc typeDesc = member.Mapping.TypeDesc;
1560 if (typeDesc.IsCollection || typeDesc.IsEnumerable)
1561 {
1562 WriteAddCollectionFixup(typeDesc, member.Mapping.ReadOnly, arraySource, text2);
1563 }
1564 else
1565 {
1566 if (typed)
1567 {
1568 base.Writer.WriteLine("try {");
1569 base.Writer.Indent++;
1570 WriteSourceBeginTyped(arraySource, member.Mapping.TypeDesc);
1571 }
1572 else
1573 {
1575 }
1576 base.Writer.Write(text2);
1578 base.Writer.WriteLine(";");
1579 if (member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite && member.CheckSpecifiedSource != null && member.CheckSpecifiedSource.Length > 0)
1580 {
1581 base.Writer.Write(member.CheckSpecifiedSource);
1582 base.Writer.WriteLine(" = true;");
1583 }
1584 if (typed)
1585 {
1586 WriteCatchCastException(member.Mapping.TypeDesc, text2, "ids[" + text + "]");
1587 }
1588 }
1589 base.Writer.Indent--;
1590 base.Writer.WriteLine("}");
1591 }
1592 base.Writer.Indent--;
1593 base.Writer.WriteLine("}");
1594 }
static CultureInfo InvariantCulture
void WriteAddCollectionFixup(TypeDesc typeDesc, bool readOnly, string memberSource, string targetSource)
void WriteLocalDecl(string typeFullName, string variableName, string initValue, bool useReflection)
void WriteCatchCastException(TypeDesc typeDesc, string source, string id)

References System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.ArraySource, System.Xml.Serialization.MemberMapping.CheckSpecified, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.CheckSpecifiedSource, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.FixupIndex, System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.Mapping, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.MultiRef, System.Xml.Serialization.MemberMapping.ReadOnly, System.source, System.text, System.Xml.Serialization.AccessorMapping.TypeDesc, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteAddCollectionFixup(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteCatchCastException(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteLocalDecl(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceBegin(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceBeginTyped(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteSourceEnd().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateEncodedMembersElement(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteEncodedStructMethod().