我对这篇文章有疑问,我们很多人都读过这篇文章:Dependency Injection in ASP.NET Web API 2。
让我们假设,稍后某个时间点的ProductRepository需要委托给其他服务。 ProductRepository如何在以后的时间从依赖注入器请求具体实例,因为将依赖注入器本身注入ProductRepository是一种不好的做法?
答案 0 :(得分:0)
您可以将新服务注入ProductRepository,就像将IProductRepository注入ProductsController一样。
public interface IOtherServiceFactory
{
IOtherService Create();
}
public class ProductRepository : IDisposable
{
private readonly IOtherServiceFactory m_OtherServiceFactory;
public ProductRepository(IOtherServiceFactory other_service_factory)
{
m_OtherServiceFactory = other_service_factory;
}
...
}
如果您在容器中成功注册IOtherService,容器将能够成功创建ProductRepository和ProductsController。
如果您每次都创建了OtherService(也许您不会一直使用它),那么您可以使用Alamofire。例如:
$('zoomer-img').click(function(){
var that = $(this);
var num = parseInt(that.data('src').substring(that.data('src').indexOf('img/'),that.lastIndexOf('.'))) + 1;
that.data('src','img/'+num+'.gif');
});
现在,您只能在需要时创建OtherService实例。
您必须创建IOtherServiceFactory的实现并将其注册到容器中。