如何在C#中反序列化XML时获取对父对象的引用?
问题描述:
我似乎无法得到这个工作,这是我(精简)代码: -如何在C#中反序列化XML时获取对父对象的引用?
[XmlRoot("report")]
public class Report
{
[XmlArray("sections"), XmlArrayItem("section")]
public List<Section> Sections;
}
public class Section
{
public Report Report;
}
我缺少的东西?
答
你应该确保你知道你想如何序列化和反序列化这些类。编写你想要的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;
}
}
这也是现在在缺少旧机制的强制性理由的情况下,序列化的首选默认机制。 – ShuggyCoUk 2009-03-02 00:46:23