C#でXMLを逆シリアル化するときに、親オブジェクトへの参照を取得するにはどうすればよいですか?

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

質問

これを機能させることができないようです。これは私の(削除された)コードです:-

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

public class Section
{
    public Report Report;
}

何かが足りませんか?

役に立ちましたか?

解決

オブジェクトには、 XmlSerializer クラス。代わりに、 DataContractSerializer を見ることができます。 そのようなシナリオをサポート

他のヒント

これらのクラスをどのようにシリアライズおよびデシリアライズするかを知っておく必要があります。結果として必要なXMLを記述し、オブジェクトをXMLにしたり、その逆にする方法を理解します。簡単なことではありません。

これが私の解決策です。あなたが期待するほどエレガントではないかもしれません:

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;
  }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top