您现在的位置是:网站首页> 编程资料编程资料
.Net Core在程序的任意位置使用和注入服务的方法_实用技巧_
2023-05-24
345人已围观
简介 .Net Core在程序的任意位置使用和注入服务的方法_实用技巧_
最近有人问我:我该如何在Startup类之外的地方注入我的服务呢,都写在startup里看着好乱;我该如何在程序的其他地方获取我注入的服务呢;下面给大家写篇文章帮助大家学习。
一、如何在Stratup类外注入服务
首先,我们看startup类的ConfigureServices方法,我们会发现我们所有的服务都是使用IServiceCollection注入进去的

所以我们在其他地方进行注入依然是使用这个接口进行注入,话不多说,上源码
我们首先定义一个静态类,然后在静态类内写一个IServiceCollection的扩展方法,这样我们就可以在这进行和startup里一样注入了。
public static class ServiceConfiguration { public static IServiceCollection ConfigServies(this IServiceCollection service) { service.AddTransient(); service.AddTransient(); 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在程序的任意位置使用和注入服务的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
相关内容
- ASP.NET Core Mvc中空返回值的处理方法详解_实用技巧_
- .net core使用MD5加密解密字符串_实用技巧_
- asp.net core集成MongoDB的完整步骤_实用技巧_
- 如何使用pm2守护你的.NET Core应用程序详解_实用技巧_
- 在.NET Core控制台程序中如何使用依赖注入详解_实用技巧_
- 深入讲解.Net Core中的Api版本控制_实用技巧_
- .NET Core中本地化机制的深入讲解_实用技巧_
- ASP.NET Core中如何使用表达式树创建URL详解_实用技巧_
- IdnentiyServer使用客户端凭据访问API的实例代码_实用技巧_
- .Net Core Api 使用版本控制详解_实用技巧_
