2009-03-01 3 views

Antwort

6

Ihre Objekte enthalten zirkuläre Referenzen, die von der Klasse nicht unterstützt werden. Sie können stattdessen die DataContractSerializer welche supports solche Szenarien betrachten.

+0

Dies ist auch der bevorzugte Standardmechanismus für die Serialisierung jetzt in Ermangelung zwingender Gründe für die älteren Mechanismen. – ShuggyCoUk

+0

Ihr DataContractSerializer-Link verweist auf XmlSerializer in MSDN ... – configurator

+0

Ich würde den fertigen Code veröffentlichen, wenn ich mehr als 300 Zeichen zum Spielen hätte, aber ausreichen, um zu sagen, mit dem DataContractSerializer gearbeitet. Vielen Dank. –

0

Sie sollten sicherstellen, dass Sie wissen, wie diese Klassen serialisiert und deserialisiert werden sollen. Schreiben Sie das gewünschte XML als Ergebnis und stellen Sie fest, wie Objekte zu XML werden sollen und umgekehrt. Es ist kein Kinderspiel.

0

Hier ist meine Lösung. Es ist möglicherweise nicht so elegant, wie Sie erwarten würden:

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; 
    } 
}