1

我似乎无法正常工作,这是我的(精简版)代码:-

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

public class Section
{
    public Report Report;
}

我错过了什么吗?

4

3 回答 3

6

您的对象包含XmlSerializer类不支持的循环引用。您可以改为查看支持此类场景的DataContractSerializer 。

于 2009-03-01T21:44:45.383 回答
0

你应该确保你知道你希望这些类如何序列化和反序列化。编写您想要的 XML 作为结果,并弄清楚您希望对象如何成为 XML,反之亦然。这不是一件容易的事。

于 2009-03-02T00:38:26.760 回答
0

这是我的解决方案。它可能没有你想象的那么优雅:

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;
  }
}
于 2009-03-02T08:35:02.730 回答