自动属性上的堆栈溢出异常

时间:2017-09-11 21:25:19

标签: c# exception properties stack overflow

我的应用程序在启动时抛出了一些自动属性和对象创建的Stack Overflow异常。

他们没有问题,我没有修改过。

基本上我有一个抽象的课程"规则"实现接口" IRule",这些属性来自接口。 然后我有一个继承自Rule的子类,我在该子类上得到了异常。

编辑:

public class RuleA: Rule
{
    private RuleA_bestSettings;

    #region PROPERTIES

    public override Rule BestSettings { get { return _bestSettings; } set { _bestSettings = value as RuleA; } }


    #endregion

    public RuleA()
    {
        Initialize();
    }

    protected override void Initialize()
    {
        base.Initialize();

        _bestSettings = new RuleA();
    }



}

}

现在,当我实例化属性

时,我在Initialize方法上获得了异常

当具有这些属性的新对象实例化时,会发生这种情况。

Si è verificata l'eccezione System.StackOverflowException
  HResult=0x800703E9
  Messaggio=Generata eccezione di tipo 'System.StackOverflowException'.

我无法弄清楚,有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

Initialize部分中,您要实例化新的RuleA。这个新的RuleA将构建自己,这样做会调用自己的Initialize部分并创建第三个RuleA。这将创造第四个。第五个。等等,直到堆栈填满。

我不确定你想要完成什么,但我的猜测是,而不是这个

protected override void Initialize()
{
    base.Initialize();

    _bestSettings = new RuleA();
}

你打算这样做:

protected override void Initialize()
{
    base.Initialize();

    _bestSettings = this; 
}