Laden...

[XmlSerializer] StackOverflowException wegen ICollection<> Interface

Erstellt von idontwantaname vor 15 Jahren Letzter Beitrag vor 15 Jahren 958 Views
I
idontwantaname Themenstarter:in
86 Beiträge seit 2006
vor 15 Jahren
[XmlSerializer] StackOverflowException wegen ICollection<> Interface

Hallo!

Ich möchte eine hierarchische Objektstruktur (composite pattern) mit dem XmlSerializer speichern, allerdings wirft dieser bereits bei seiner Instanzierung eine StackOverflowException.
Das Problem konnte ich mittlerweile darauf zurückführen, dass meine Klasse von ICollection<> erbt. Hier mein Code:

public class MyClass : ICollection<MyClass>
{
    // Quellcode
}

Habt ihr Ideen, wie ich das Problem lösen kann? Würde der Typenparameter von ICollection nicht MyClass sein, so würde es funktionieren.

Lg oli

3.971 Beiträge seit 2006
vor 15 Jahren

Füge deine Klasse zusätzlich noch die Schnittstelle IXmlSerializable hinzu und sorge selbst für das Lesen und Schreiben der Xml-Daten für diese Klasse.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

I
idontwantaname Themenstarter:in
86 Beiträge seit 2006
vor 15 Jahren

Hi du!

Danke für den Tipp 😉 Also ich hatte zwar gehofft, dass ich eine Lösung finde, ohne dass ich den Kernteil der Serialisierung selber implementieren muss, aber macht nichts ^^

Da hab ich auch gleich eine Frage: Kennt ihr ein gutes Tutorial zu XML in .NET? Bin nämlich gerade draufgekommen, dass ich nicht so 100% zurecht komme mit dem XmlReader, er wirft mir andauern Exceptions und außerdem hab ich mich noch nicht wirklich mit XML in .NET auseinandergesetzt und das ist meiner Meinung nach eine gute Gelegenheit!

Lg oli

3.971 Beiträge seit 2006
vor 15 Jahren

Lesen von XML mit dem "XmlReader"
Schreiben von XML mit dem "XmlWriter"

Du kannst aber auch XmlDocument verwenden wenn dir das lieber ist. Beim Lesen einfach ein neues XmlDocument erzeugen und anschließend die Nodes entsprechend deinem Schema auslesen. XPath ist beispielsweise eine sehr feine Sache.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...