相互参照的风险

时间:2018-12-20 01:17:52

标签: c# cross-reference

我做了一个叫做“ 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不允许我做这种模式。

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

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用属性注入来避免循环依赖:

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

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

答案 1 :(得分:0)

@ Gauravsa提出的解决方案的问题如下:如果我有类B的一个实例,并且想知道哪个类A的实例已引用了它,那么我无法找到答案。这就是为什么它被称为“交叉引用”而不是“引用”的原因。