最近有人问我:我该如何在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在程序的任意位置使用和注入服务的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站长技术网站的支持!
--正则-- 基础正则 ^word ##搜索以word开头的 vi/vim中 ^ 一行的开头 word$ ##搜...
最近在做一个程序正好需要用到此方面,在网上找到过相应的程序,但用起来都非常...
domainname.asp form method="POST" 请输入域名 :input type="text" name="Domai...
首先,本项目中使用的是bootstrap框架,因此有些人会说,给表格设置自适应属性就...
支持多行同时拖拽,重复数据不重得添加,添加了图表右键菜单. 复制代码 代码如下...
上篇文章给大家介绍了 JavaScript 正则表达式上之基本语法 介绍了JavaScript正则...
前段时间CameraX的Beta版发布了,这几天有时间也来尝试一下。Beta版本是对外测试...
日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日...
本文主要介绍了为什么v-if和v-for不建议一起用?分享给大家,具体如下: 一、作...
前言 XRPC的目标非常明确,就是给.net core平台实现一个百万级别的远程方法调用R...