Wie kann ich einen Verweis auf das übergeordnete Objekt erhalten, wenn XML in C # Deserialisieren?

StackOverflow https://stackoverflow.com/questions/600597

Frage

Ich kann diese Arbeit zu bekommen scheinen, hier ist mein (abgespeckte) Code: -

[XmlRoot("report")]
public class Report
{
    [XmlArray("sections"), XmlArrayItem("section")]
    public List<Section> Sections;
}

public class Section
{
    public Report Report;
}

Bin ich etwas fehlt?

War es hilfreich?

Lösung

Ihre Objekte enthalten zirkuläre Referenzen, die durch die DataContractSerializer die unterstützt solche Szenarien.

Andere Tipps

Sie sollten sicherstellen, dass Sie wissen, wie Sie diese Klassen wollen serialisiert und deserialisiert. Schreiben Sie die XML Sie als Ergebnis möchten, und herauszufinden, wie Sie Objekte XML und umgekehrt werden wollen. Es ist nicht ein Kinderspiel.

Hier ist meine Lösung. Es ist vielleicht nicht so elegant, wie man es erwarten würde:

public class Report
{
  //...


  void PostLoad()
  {
    foreach(Section s in Sections)
    {
      s.Report = this;
    }
  }

  public static Report Load(string filename)
  {
    // Load using an XmlSerializer
    Report report = ...;

    report.PostLoad();

    return report;
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top