如何防止此异常发生,因为我必须从一个类获取某些值并将其传递给另一个类,因为它的对象已经在该类中?
我的第一堂课是:
public partial class Rack : UserControl
{
ContainerAdmin a = new ContainerAdmin();
public Rack()
{
InitializeComponent();
}
public string getposition()
{
PositionLabel.Text = Regex.Replace(PositionLabel.Text, "[^0-9]+", string.Empty);
return PositionLabel.Text;
}
}
我的另一堂课是:
public partial class ContainerAdmin : UserControl, IDataConsumer<ContainerAdminAssemblyAdapter>
{
public ContainerAdminAssemblyAdapter Adapter { get; set; }
Rack[] racking = new Rack[64];
}
将发生递归循环,因此我想阻止这种情况。
答案 0 :(得分:4)
您可能会创建一个ContainerAdmin创建一个Racks数组,然后创建一个ContainerAdmin,然后创建一个Racks数组,依此类推。它就像一个函数在没有停止条件的情况下调用自身,这就是为什么你得到堆栈溢出。
要解决此问题,您必须重新构建程序。在ContainerAdmin或Rack类中,您不应该创建另一个的新实例。使用我的通灵能力,我猜想应该为Rack对象提供一个预先存在的ContainerAdmin对象。
答案 1 :(得分:0)
你在这里循环。换句话说,你在这里创建了循环依赖。这就是你得到这个例外的原因。
Rack正在创建ContainerAdmin的实例,而ContainerAdmin正在创建 创建Rack的实例。