-1
我想從反編譯一個類從一個allready保存.xml文件。問題是,只要我使用get{...} set{...};
該代碼拋出一個StackOverflow異常。我用這段代碼創建一個無限循環嗎?因爲我無法通過停止點來追蹤循環。XMl Deserializise 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() { }
}
凡
[XmlIgnore]
public ProcessStartInfo Info {
set { Info = value; }
get {
Info.Arguments = args;
Info.Arguments = Path;
return Info;
}
}
get{...}
函數拋出StackOverflowException。
我會忽略ProcessStartInfo,因爲我無法序列化這種類型,因此創建了兩個字符串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本身。那創造了循環。 – TheCheatsrichter