当前位置:首页 > Web开发 > 正文

ASP.NET Core DI 手动获取注入东西 (转)

2024-03-31 Web开发

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