通过构造函数注入容器是否有效?还是需要更精细?
public class Car{
private readonly IContainer _container;
public Car(IContainer container){
this._container = container;
}
public string DoSomething(){
var service1 =_container.GetInstance<IServiceINeed1>();
service1.DoStuff();
var service2 =_container.GetInstance<IServiceINeed2>();
service2.DoThings();
}
}
VS。
public class Car{
private readonly IServiceINeed1 _service1;
private readonly IServiceINeed2 _service2;
public Car(IServiceINeed1 service1, IServiceINeed2 service2){
this._service1 = service1;
this._service2 = service2;
}
public string DoSomething(){
this._service1.DoStuff();
this._service2.DoThings();
}
}
如果无效,其背后的原因是什么?
答案 0 :(得分:0)
如果您注入Container,那么您对类所依赖的依赖项一无所知。我认为这称为服务定位器,您可以阅读here 为什么服务定位器是反模式。因此,如果您注入类所依赖的接口,那就更好了。