所以,假设我可以画画:
假设我有一个类A
,它依赖于对象B
并被C
实例化,但C
也依赖于 的实例B
,并且我希望这个实例B
与我传递给 的实例相同A
。我怎样才能做到这一点?
现在,您可能根本不明白这一点;所以我会继续把它变成代码:
public class A
{
private readonly B b;
private readonly C c;
public A(B b, C c)
{
this.b = b;
this.c = c;
}
}
public class B
{
}
public class C
{
private readonly B b;
public C(B b)
{
this.b = b;
}
}
如果没有 DI,我会这样解决它:
var b = new B();
var c = new C(b);
var a = new A(b,c);
我怎样才能通过 DI 干净地完成这样的事情?我想要的非常简单:在同时实例化和B
时使用相同的实例。C
A
忘了提到我确实希望在每个网络请求的生活方式中做到这一点,而不是单例或瞬态。