我正在一个.net核心项目中,每个控制器都有自己的DI服务。所有这些服务共享一些共同的东西,所以我抽象了一个BaseService
类:
public class BaseService
{
public BaseService(IHttpContextService srv)
{
...
}
}
此BaseService
,换句话说,所有服务都需要HTTP上下文的另一个服务。
现在,如果我需要新控制器的新服务,则需要从BaseService
继承:
public class MyFirstService : BaseService
{
public MyFirstService(IHttpContextService srvHttp, AdditionalService srvAdditional) {}
}
在其构造函数中,我将需要再次指定IHttpContextService
,以及此MyFirstService
需要的一些其他服务。
但这似乎是错误的,因为孩子是后代,因此应该自然拥有IHttpContextService
。更不用说孩子没有构造函数,该构造函数的参数与祖先参数相同,从而产生编译错误。
有没有一种方法可以在构造函数之外添加DI对象?还是只是摆脱.net核心的DI?还是应该更改我的设计模式?