Ich versuche, eine Klasse aus einer bereits gespeicherten XML-Datei zu deserialisieren. Das Problem ist, sobald ich get{...} set{...};
verwenden, löst der Code eine StackOverflow-Ausnahme aus. Erstelle ich eine Endlosschleife mit diesem Code? Weil ich eine Schleife mit Haltepunkten nicht aufspüren konnte.XMl Deserialisierung StackOverflowException
Die Klasse:
[Serializable]
public class AddOn
{
[System.Xml.Serialization.XmlElement("Name")]
public string Name { set; get; }
[XmlIgnore]
public ProcessStartInfo Info {
set { Info = value; }
get {
Info.Arguments = args;
Info.Arguments = Path;
return Info;
}
}
[System.Xml.Serialization.XmlElement("Arguments")]
public string args { set; get; }
[System.Xml.Serialization.XmlElement("Path")]
public string Path { set; get; }
[XmlIgnore]
public List<Process> ChildProcess = new List<Process>();
public AddOn(string Name, ProcessStartInfo Info)
{
this.Name = Name;
this.Info = Info;
args = Info.Arguments;
Path= Info.FileName;
}
public AddOn() { }
}
Wo die
[XmlIgnore]
public ProcessStartInfo Info {
set { Info = value; }
get {
Info.Arguments = args;
Info.Arguments = Path;
return Info;
}
}
get{...}
Funktion Stackoverflow wirft.
I ignorieren die ProcessStartInfo, weil ich diesen Typ an erster Stelle nicht serialisieren konnte und daher die zwei Zeichenfolgen Args und Path erstellt.
-Code, der die entserialisierten Liste der Addons zurückkehren sollte:
XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<AddOn>));
StreamReader reader = new StreamReader(path);
var addons = (ObservableCollection<AddOn>)serializer.Deserialize(reader);
reader.Close();
return addons;
Dank für die Erwähnung, dass! Abgesehen von dieser Zeile habe ich den Teil, der sich auf die ProcessStartInfo selbst bezieht, total vermasselt. Das hat die Schleife erzeugt. – TheCheatsrichter