-1
私は既に保存された.xmlファイルからクラスを逆シリアル化しようとしています。問題はすぐに私がget{...} set{...};
を使用すると、コードがStackOverflow例外をスローします。このコードで無限ループを作成しますか?私はポイントを停止してループを追跡することができなかったので。XMl Deserializise StackOverflowException
クラス:
[XmlIgnore]
public ProcessStartInfo Info {
set { Info = value; }
get {
Info.Arguments = args;
Info.Arguments = Path;
return Info;
}
}
get{...}
機能がStackOverflowExceptionがをスロー
[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() { }
}
。
私はProcessStartInfoを無視します。最初にこの型をシリアル化できなかったため、2つの文字列argsとPathが作成されたためです。アドオンの非直列化されたリストを返す必要があります
コード:
XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<AddOn>));
StreamReader reader = new StreamReader(path);
var addons = (ObservableCollection<AddOn>)serializer.Deserialize(reader);
reader.Close();
return addons;
感謝をリードします!その行とは別に、私はProcessStartInfo自体を参照してget getの部分を完全に止めました。それはループを作りました。 – TheCheatsrichter