交叉引用的风险

Risk of cross-reference

我制作了一个名为 'A' 的 class 和那个引用 'B' class 同时,我制作了一个名为 'B' 的 class 和那个引用 'A' class

我做了两个 class如下所示

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

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

但是 NInjection 不允许我制作这样的图案。

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

谢谢。

您可以使用 属性 注入来绕过循环依赖:

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

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

@Gauravsa 提出的解决方案的问题如下:如果我有一个 class B 的实例,想知道 class A 的哪个实例引用了它,有我没办法找出来。这就是为什么它被称为 "cross-referencing",而不是 "referencing"。