C# XMl反序列化StackOverflowException

C# XMl反序列化StackOverflowException,c#,xml,wpf,C#,Xml,Wpf,我正在尝试从allready保存的.xml文件反序列化一个类该代码引发StackOverflow异常。我是否用这段代码创建了一个无限循环?因为我找不到一个有停顿点的环路 班级: [Serializable] public class AddOn { [System.Xml.Serialization.XmlElement("Name")] public string Name { set; get; } [XmlIgnore] public ProcessSt

我正在尝试从allready保存的.xml文件反序列化一个类该代码引发StackOverflow异常。我是否用这段代码创建了一个无限循环?因为我找不到一个有停顿点的环路

班级:

 [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() { }
}
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;
XmlSerializer serializer=新的XmlSerializer(typeof(observeCollection));
StreamReader=新的StreamReader(路径);
var addons=(ObservableCollection)序列化程序。反序列化(读取器);
reader.Close();
返回插件;
此呼叫

 public ProcessStartInfo **Info** {
    **set { Info = value; }**
    get {
        Info.Arguments = args;
        Info.Arguments = Path;
        return Info;
    }
}

呼叫本身导致溢出

感谢您的提醒!除此之外,我完全搞砸了get-get部分,它涉及到ProcessStartInfo本身。这就产生了循环。
 public ProcessStartInfo **Info** {
    **set { Info = value; }**
    get {
        Info.Arguments = args;
        Info.Arguments = Path;
        return Info;
    }
}