自动属性的堆栈溢出异常
Stack Overflow Exception on Auto Properties
我的应用程序在启动某些自动属性和 object 时抛出堆栈溢出异常。
他们工作没有问题,我没有修改他们。
基本上我有一个实现接口 "IRule" 的抽象 class "Rule",那些属性来自接口。
然后我有一个继承自 Rule 的 child class,我在 child class 上得到了异常。
编辑:
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 方法出现异常
实例化具有这些属性的新 object 时会发生这种情况。
Si è verificata l'eccezione System.WhosebugException
HResult=0x800703E9
Messaggio=Generata eccezione di tipo 'System.WhosebugException'.
我想不通,有什么想法吗?谢谢!
在您的 Initialize
部分中,您正在实例化一个新的 RuleA
。这个新的 RuleA
将构建自己,并在这样做时调用自己的 Initialize
部分并创建第三个 RuleA
。这将创造第四个。还有五分之一。以此类推,直到堆栈填满。
我不确定你想要完成什么,但我的猜测是,而不是这个
protected override void Initialize()
{
base.Initialize();
_bestSettings = new RuleA();
}
您打算这样做:
protected override void Initialize()
{
base.Initialize();
_bestSettings = this;
}
我的应用程序在启动某些自动属性和 object 时抛出堆栈溢出异常。
他们工作没有问题,我没有修改他们。
基本上我有一个实现接口 "IRule" 的抽象 class "Rule",那些属性来自接口。 然后我有一个继承自 Rule 的 child class,我在 child class 上得到了异常。
编辑:
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 方法出现异常实例化具有这些属性的新 object 时会发生这种情况。
Si è verificata l'eccezione System.WhosebugException
HResult=0x800703E9
Messaggio=Generata eccezione di tipo 'System.WhosebugException'.
我想不通,有什么想法吗?谢谢!
在您的 Initialize
部分中,您正在实例化一个新的 RuleA
。这个新的 RuleA
将构建自己,并在这样做时调用自己的 Initialize
部分并创建第三个 RuleA
。这将创造第四个。还有五分之一。以此类推,直到堆栈填满。
我不确定你想要完成什么,但我的猜测是,而不是这个
protected override void Initialize()
{
base.Initialize();
_bestSettings = new RuleA();
}
您打算这样做:
protected override void Initialize()
{
base.Initialize();
_bestSettings = this;
}