Я не могу заставить это работать, вот мой (урезанный) код: -
[XmlRoot("report")] public class Report { [XmlArray("sections"), XmlArrayItem("section")] public List<Section> Sections; } public class Section { public Report Report; }
Я что-то упустил?
Ваши объекты содержат циклические ссылки, которые не поддерживаются классом XmlSerializer . Вместо этого вы можете взглянуть на DataContractSerializer , который поддерживает такие сценарии.
Вот мое решение. Это может быть не так элегантно, как вы ожидаете:
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; } }
Вы должны убедиться, что знаете, как эти классы сериализуются и десериализуются. Напишите XML, который вы хотите получить, и выясните, как вы хотите, чтобы объекты стали XML, и наоборот. Это не просто.