交叉引用的风险
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"。
我制作了一个名为 '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"。