ASP.NET Core DI 手动获取注入东西 (转)
ASP.NET Core DI 手动获取注入东西:https://www.cnblogs.com/xishuai/p/asp-net-core-ioc-di-get-service.html
要领1(获取Transient和Singleton注入的东西):
在 Startup 类的 Configure 要领中,获取 DI 容器,然后保存在一个静态类的静态属性中。
增补:需要注意的是,使用ServiceLocator.Instance.GetService<T>();,只能获取Transient和Singleton注入的东西,,而不能获取 Scoped(请求生命周期内独一)注入的东西,不是不能获取,而是获取的和结构函数获取的不是不异东西,也就是说获取的东西没有共享。
public void Configure(IApplicationBuilder app)
{
ServiceLocator.Instance = app.ApplicationServices;
}
public static class ServiceLocator
{
public static IServiceProvider Instance { get; set; }
}
要领2:获取 Scoped(请求生命周期内独一)注入的东西
通过 httpContext 的属性 HttpContext.RequestServices ,是一个IServiceProvider (DI 子容器)。 参考
ASP.NET Core DI 手动获取注入东西 (转)
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30806.html