我想知道为什么不显式使用 IServiceProvider 来解决依赖项而不是单独注入每个依赖项。换句话说,为什么要使用这种方法:
public class A
{
private B _b;
private C _c;
private D _d;
private E _e;
public A(B b, C c, D d, E e)
{
_b = b;
_c = c;
_d = d;
_e = e;
}
}
而不是这个:
public class A
{
private B _b;
private C _c;
private D _d;
private E _e;
public A(IServiceProvider sp)
{
_b = (b) sp.GetService(typeof(b));
_c = (c) sp.GetService(typeof(c));
_d = (d) sp.GetService(typeof(d));
_e = (e) sp.GetService(typeof(e));
}
}
请注意,我可能不会要求GetService所有类型,某些类型实际上可能是可选的(即有时使用,有时不使用)。
第二种方法的优点是,如果 A 的依赖项发生变化,我们不需要在调用 A 的构造函数的每个地方进行更改,并且我们不需要拥有所有无论我们在哪里调用构造函数,依赖项都已经可用。
蝴蝶不菲
翻过高山走不出你
相关分类