首页 > 解决方案 > 交叉引用的风险

问题描述

我创建了一个名为“A”的类,引用了“B”类同时,我创建了一个名为“B”的类,引用了“A”类

我做了两个类,如下所示

class A
{
   private readonly B _b;
   A(B b)
   {
      _b = b;
   }
}

class B
{
   private readonly A _a;
   B(A a)
   {
      _a = a;
   }
}

但是 NInjection 不允许我做出这样的模式。

所以,我想知道为什么不允许交叉引用。

谢谢你。

标签: c#cross-reference

解决方案


您可以使用属性注入来解决循环依赖:

class A
{
   public B _b {get; set;}
   public void OtherMethod() {}
}

class B
{
   B(A a)
   {
      a._b = this;
   }
}

推荐阅读