代码之家  ›  专栏  ›  技术社区  ›  Martin Staufcik

ASP.NET核心DI直接访问容器

  •  1
  • Martin Staufcik  · 技术社区  · 7 年前

    通常所做的是构造函数注入:

    public class ProductsController : Controller
    {
        public ProductsController(ISomeService service)
        {
    
        }
    }
    

    相反,我想做如下事情:

    var service = ServiceLocator.GetService<ISomeService>();
    

    对于某些服务,我不想使用默认构造函数注入,而是直接从容器获取服务。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Marcus Höglund    7 年前

    它被称为 服务定位器模式

    public class ProductsController : Controller
    {
        public ProductsController(IServiceProvider services)
        {
            var service = services.GetService<ISomeService>(); 
        }
    }
    

    Here's 一篇关于不同策略的好文章

    推荐文章