如果我的基类通过构造函数依赖注入了一些服务:在子类中声明构造函数时,是否有可能不使用
这里的问题是我有多个子类,目前只有10个左右,但这个数字会增加。每次我需要向基类添加另一个依赖项时,都必须逐个检查每个子类并手动将该依赖项添加到那里。这种手动工作让我觉得我的设计存在问题。
因此,是否可能在不在子类的构造函数中声明基类所需服务的情况下声明
: 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。