通常所做的是构造函数注入:
public class ProductsController : Controller { public ProductsController(ISomeService service) { } }
相反,我想做如下事情:
var service = ServiceLocator.GetService<ISomeService>();
对于某些服务,我不想使用默认构造函数注入,而是直接从容器获取服务。
它被称为 服务定位器模式
public class ProductsController : Controller { public ProductsController(IServiceProvider services) { var service = services.GetService<ISomeService>(); } }
Here's 一篇关于不同策略的好文章