是否可以直接从类访问ASP.NET Core的DI容器?
通常要做的是构造函数注入:
public class ProductsController : Controller
{
public ProductsController(ISomeService service)
{
}
}
相反,我想做类似的事情:
var service = ServiceLocator.GetService<ISomeService>();
对于某些服务,我不想使用默认的构造函数注入,而是直接从容器中获取服务。
答案 0 :(得分:1)
它称为服务定位器模式,可以通过注入IServiceProvider来完成
public class ProductsController : Controller
{
public ProductsController(IServiceProvider services)
{
var service = services.GetService<ISomeService>();
}
}
Here's很好的文章提出了不同的策略