.Net Core在程序的任意位置使用和注入服务的方法
2018-10-20 11:52
921 查看
最近有人问我:我该如何在Startup类之外的地方注入我的服务呢,都写在startup里看着好乱;我该如何在程序的其他地方获取我注入的服务呢;下面给大家写篇文章帮助大家学习。
一、如何在Stratup类外注入服务
首先,我们看startup类的ConfigureServices方法,我们会发现我们所有的服务都是使用IServiceCollection注入进去的
所以我们在其他地方进行注入依然是使用这个接口进行注入,话不多说,上源码
我们首先定义一个静态类,然后在静态类内写一个IServiceCollection的扩展方法,这样我们就可以在这进行和startup里一样注入了。
public static class ServiceConfiguration { public static IServiceCollection ConfigServies(this IServiceCollection service) { service.AddTransient<INavigation, NavigationLogic>(); service.AddTransient<IUserInfo, UserInfoLogic>(); return service; } }
静态类写完后,我们只需要在staatup中注入我们扩展的这个静态类就可以使用这个类中所注入的服务了。
这样我们就在可以拿到ServiceConfiguration类中所注入的所有服务了。
二、如何在程序的任何地方拿到我所注入的服务。
.NET Core默认的注入是使用构造函数的,如果我们想在任意 的地方拿到服务,我们需要使用IServiceProvider接口
我们定义一个静态类,然后定义一个IServiceProvider静态属性
public static class CZHttpContext { public static IServiceProvider ServiceProvider{get;set;}; }
然后我们在starup中把他注入进去
使用方法,
var dbContext = CZHttpContext.ServiceProvider.GetService(typeof(CZDbContext)) as CZDbContext;
这样我们就能获取出上图在startup中注入的CZDbContext;
总结
以上所述是小编给大家介绍的.Net Core在程序的任意位置使用和注入服务的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- 在别人的程序的任意位置加上调用自己函数的代码,且不影响原程序执行的方法
- 在.net 2.0/3.0程序中使用扩展方法
- Java开发桌面程序SWING,设置主窗口位置居中一般使用下面的方法
- 在vs2008中使用AJAX开发.net 2.0下的Web程序的方法
- 不使用.net启动resin4和注册成服务的方法
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法
- asp,.net防注入程序及代码(s.see9.us挂马解决方法)
- 使用Oracle ODP.NET 11g的.NET程序发布方法
- 使用Android提供的模拟任意地理位置,报java.lang.IllegalArgumentException: Incomplete location object异常的解决方法
- android 卸载程序、清除数据、停止服务使用方法
- android 卸载程序、清除数据、停止服务使用方法
- 使用Oracle ODP.NET 11g的.NET程序发布方法
- 使用Oracle ODP.NET 11g的.NET程序发布方法
- C#程序安装.net服务(不使用InstallUtil.exe)
- 在.net 2.0/3.0程序中使用扩展方法
- 【.net项目中。。】.net一般处理程序使用方法
- 程序安装.net服务(不使用InstallUtil.exe)
- ASP.NET 计划任务实现方法(不使用外接程序,.net内部机制实现)
- 使用.NET应用为宿主程序来运行WCF服务
- 在vs2008中使用AJAX开发.net 2.0下的Web程序的方法