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

◆ WriteAddCollectionFixup()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteAddCollectionFixup ( TypeDesc typeDesc,
bool readOnly,
string memberSource,
string targetSource )
inlineprivate

Definition at line 1596 of file XmlSerializationReaderCodeGen.cs.

1597 {
1598 base.Writer.WriteLine("// get array of the collection items");
1599 CreateCollectionInfo createCollectionInfo = (CreateCollectionInfo)_createMethods[typeDesc];
1600 if (createCollectionInfo == null)
1601 {
1604 handler.AppendLiteral("create");
1606 handler.AppendLiteral("_");
1607 handler.AppendFormatted(typeDesc.Name);
1608 string name = string.Create(invariantCulture, ref handler);
1609 createCollectionInfo = new CreateCollectionInfo(name, typeDesc);
1611 }
1612 base.Writer.Write("if ((object)(");
1613 base.Writer.Write(memberSource);
1614 base.Writer.WriteLine(") == null) {");
1615 base.Writer.Indent++;
1616 if (readOnly)
1617 {
1618 base.Writer.Write("throw CreateReadOnlyCollectionException(");
1620 base.Writer.WriteLine(");");
1621 }
1622 else
1623 {
1624 base.Writer.Write(memberSource);
1625 base.Writer.Write(" = ");
1626 base.Writer.Write(base.RaCodeGen.GetStringForCreateInstance(typeDesc.CSharpName, typeDesc.UseReflection, typeDesc.CannotNew, cast: true));
1627 base.Writer.WriteLine(";");
1628 }
1629 base.Writer.Indent--;
1630 base.Writer.WriteLine("}");
1631 base.Writer.Write("CollectionFixup collectionFixup = new CollectionFixup(");
1632 base.Writer.Write(memberSource);
1633 base.Writer.Write(", ");
1634 base.Writer.Write("new ");
1636 base.Writer.Write("(this.");
1637 base.Writer.Write(createCollectionInfo.Name);
1638 base.Writer.Write("), ");
1639 base.Writer.Write(targetSource);
1640 base.Writer.WriteLine(");");
1641 base.Writer.WriteLine("AddFixup(collectionFixup);");
1642 }
virtual void Add(object key, object? value)
Definition Hashtable.cs:676
static CultureInfo InvariantCulture
delegate void XmlSerializationCollectionFixupCallback(object? collection, object? collectionItems)

References System.Xml.Serialization.XmlSerializationReaderCodeGen._createMethods, System.Xml.Serialization.XmlSerializationReaderCodeGen._nextCreateMethodNumber, System.Collections.Hashtable.Add(), System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(), System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendLiteral(), System.Xml.Dictionary, System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString(), and System.Xml.Serialization.XmlSerializationCollectionFixupCallback().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteArray(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteFixupMethod().