如果我有一个通过构造函数依赖注入服务的基类:是否可以在不使用的情况下声明子类的构造函数: base (params)
?
public MyBaseClass
{
private IServiceA _serviceA;
private IServiceB _serviceB;
private IServiceC _serviceC;
public MyBaseClass(null, null, null)
public MyBaseClass(IServiceA serviceA, IServiceB serviceB, IServiceC serviceC)
{
_serviceA = serviceA;
_serviceB = serviceB;
_serviceC = serviceC;
}
}
还有一个注入了一些额外依赖项的子类:
public MySubClassA : MyBaseClass
{
private IServiceD _serviceD;
public MySubClassA (null, null, null, null)
public MySubClassA (IServiceA serviceA, IServiceB serviceB,
IServiceC serviceC, IServiceD serviceD)
: base (serviceA, serviceB, serviceC)
{
_serviceD = serviceD;
}
}
这里的问题是我有多个子类,现在只有 10 个左右,但数量会增加。每次我需要向基类添加另一个依赖项时,我都必须遍历每个子类并在那里手动添加依赖项。这个手工工作让我觉得我的设计有问题。
那么是否可以MyBaseClassA
在子类的构造函数中声明没有基类所需服务的构造函数呢?例如,这样的构造函数 MyBaseClassA
只有这个更简单的代码:
public MySubClassA (null)
public MySubClassA (IServiceD serviceD)
{
_serviceD = serviceD;
}
我需要在基类中更改什么,以便在那里发生依赖注入并且不需要将其添加到子类中?我正在使用 LightInject IoC。