C# 自动属性上的堆栈溢出异常
我的应用程序在启动时对一些自动属性和对象创建抛出堆栈溢出异常 他们工作没有问题,我没有修改他们 基本上我有一个抽象类“Rule”,它实现了一个接口“IRule”,这些属性来自接口。 然后我有一个子类继承自规则,我得到该子类的异常 编辑: } 现在,当我实例化属性时,初始化方法出现异常 当实例化具有这些属性的新对象时,会发生这种情况C# 自动属性上的堆栈溢出异常,c#,exception,properties,stack,overflow,C#,Exception,Properties,Stack,Overflow,我的应用程序在启动时对一些自动属性和对象创建抛出堆栈溢出异常 他们工作没有问题,我没有修改他们 基本上我有一个抽象类“Rule”,它实现了一个接口“IRule”,这些属性来自接口。 然后我有一个子类继承自规则,我得到该子类的异常 编辑: } 现在,当我实例化属性时,初始化方法出现异常 当实例化具有这些属性的新对象时,会发生这种情况 Si è verificata l'eccezione System.StackOverflowException HResult=0x800703E9 Me
Si è verificata l'eccezione System.StackOverflowException
HResult=0x800703E9
Messaggio=Generata eccezione di tipo 'System.StackOverflowException'.
我想不出来,有什么想法吗?谢谢 在
初始化
部分,您正在实例化一个新的规则a
。这个新的RuleA
将自行构造,这样它将调用自己的Initialize
部分并创建第三个RuleA
。这将创建第四个。还有第五个。依此类推,直到堆栈填满
我不确定你想完成什么,但我猜是这样而不是这样
protected override void Initialize()
{
base.Initialize();
_bestSettings = new RuleA();
}
你想这样做:
protected override void Initialize()
{
base.Initialize();
_bestSettings = this;
}
如果您在使用此属性和获取异常的位置添加代码,您的问题可能会更好。是否可以发布异常和调用堆栈?那房子看起来不错。这是另外一个问题。对不起,我已经编辑了这个问题。我添加了获取例外的方法。我没有更多关于这些属性的代码,它们都在那里。我不知道如何共享整个源代码。谢谢,这应该是问题所在吗..这是我对类所做的最后一次更改。基本上,我需要一个与属性RuleA类型相同的新对象。我在构造函数上调用的Initialize方法上实例化它时犯了一个错误。我把它移到了另一个方法上,现在它开始工作了!非常感谢所有人的帮助,并对造成的混乱表示抱歉。
protected override void Initialize()
{
base.Initialize();
_bestSettings = this;
}