.net core批量注入实现类
1.获取实现类程序集方法
public class RuntimeHelper
{
//通过程序集的名称加载程序集
public static Assembly GetAssemblyByName(string assemblyName)
{
return AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(assemblyName));
}
}
2.遍历实现类,批量注入映射关系
public static void AddAssembly(this IServiceCollection service, string assemblyName
,ServiceLifetime serviceLifetime = ServiceLifetime.Scoped)
{
var assembly = RuntimeHelper.GetAssemblyByName(assemblyName); var types = assembly.GetTypes();
var list = types.Where(u => u.IsClass && !u.IsAbstract && !u.IsGenericType).ToList(); foreach (var type in list)
{
var interfaceList = type.GetInterfaces();
if (interfaceList.Any())
{
var inter = interfaceList.First(); switch (serviceLifetime)
{
case ServiceLifetime.Transient:
service.AddTransient(inter, type);
break;
case ServiceLifetime.Scoped:
service.AddScoped(inter, type);
break;
case ServiceLifetime.Singleton:
service.AddSingleton(inter, type);
break; }
service.AddScoped(inter, type);
}
}
}
}
3.在Startup类中使用

4.这样就实现了类似于autofac的功能,其实.net core自己的依赖注入容器挺好的
.net core批量注入实现类的更多相关文章
- 从我做起[原生DI实现模块化和批量注入].Net Core 之一
实现模块化注册 .Net Core实现模块化批量注入 我将新建一个项目从头开始项目名称Sukt.Core. 该项目分层如下: Sukt.Core.API 为前端提供APi接口(里面尽量不存在业务逻辑, ...
- 在ASP.NET Core中实现自动注入、批量注入
我们在使用AddScoped.AddTransient.AddSingleton这类方法的时候很是麻烦.我们每增加一个接口以及其实现的时候,是不是需要在这里硬编码注册一行代码呢?项目小还好,但当我们的 ...
- 在.NET Core中批量注入Grpc服务
GRPC 是谷歌发布的一个开源.高性能.通用RPC服务,尽管大部分 RPC 框架都使用 TCP 协议,但其实 UDP 也可以,而 gRPC 干脆就用了 HTTP2.还有就是它具有跨平台.跨语言 等特性 ...
- DotNetCore依赖注入实现批量注入
文章转载自平娃子(QQ:273206491):http://os.pingwazi.cn/resource/batchinjectservice 一.依赖注入 通过依赖注入,可以实现接口与实现类的松耦 ...
- .netcore之DI批量注入(支持泛型) - xms
一旦系统内模块比较多,按DI标准方法去逐个硬敲AddScoped/AddSingleton/AddTransient缺乏灵活性且效率低下,所以批量注入提供了很大的便捷性,特别是对于泛型的服务类,下面介 ...
- .net core 依赖注入, autofac 简单使用
综述 ASP.NET Core 支持依赖注入, 也推荐使用依赖注入. 主要作用是用来降低代码之间的耦合度. 什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面 ...
- .Net Core — 依赖注入
在.NET Core 中 依赖注入Dependency-Injection)作为基础知识,在.Net Core中无处不在:这么重要的知识接下来就了解和在.Net Core中使用. 一.依赖注入 说到依 ...
- .NET 使用自带 DI 批量注入服务(Service)和 后台服务(BackgroundService)
今天教大家如何在asp .net core 和 .net 控制台程序中 批量注入服务和 BackgroundService 后台服务 在默认的 .net 项目中如果我们注入一个服务或者后台服务,常规的 ...
- # ASP.NET Core依赖注入解读&使用Autofac替代实现
标签: 依赖注入 Autofac ASPNETCore ASP.NET Core依赖注入解读&使用Autofac替代实现 1. 前言 2. ASP.NET Core 中的DI方式 3. Aut ...
随机推荐
- LG2516 【[HAOI2010]最长公共子序列】
前言 感觉这几篇仅有的题解都没说清楚,并且有些还是错的,我再发一篇吧. 分析 首先lcs(最长公共子序列)肯定是板子.但这题要求我们不能光记lcs是怎么打的,因为没这部分分,并且另外一个方程的转移要用 ...
- MySQL 5.7--复制延迟监控
========================================== SHOW PROCESSLIST方式 为保证二进制日志在从库的执行时间和顺序的正确性,二进制日志中的每个语句都设置 ...
- 01c语言基础
1.布尔类型 #include <stdio.h> int main(){ ; bool flag2 = true; ,b =; printf("%d,%d,%d\n" ...
- Jmeter的NON-GUI模式
一般来讲,Jmeter执行压测,都是用Jmeter的命令模式,脚本调试好, 测试脚本能够大大缩减所需要的系统资源. 1.1命令介绍: jmeter -n -t <testplan filenam ...
- 一个简单的web.py论坛
一.概述 forum是一个简单的web.py论坛,后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS. 该论坛的主要功能包 ...
- preload 与 prefetch 的区别
Preload 浏览器会在遇到如下link标签时,立刻开始下载main.js(不阻塞parser),并放在内存中,但不会执行其中的JS语句. 只有当遇到script标签加载的也是main.js的时候, ...
- Simple Logging Facade for Java 简单日志门面(Facade)
SLF4J是为各种 loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现.Logging API实现既可以选择直接实现SLF4J接口的 ...
- fastdfs远程服务器java连接失败的问题
異常如下: java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitFo ...
- html-display标签
标签可以分为行内标签和行间块级标签, 块级标签:占一行,如果父标签没有限高度,子标签会自动扩展父标签的高度,行内标签不能, 可以设置宽度 高度 padding margin 行内标签: 不能设置 ...
- IKAnalyzer 添加扩展词库和自定义词
原文链接http://blog.csdn.net/whzhaochao/article/details/50130605 IKanalyzer分词器 IK分词器源码位置 http://git.osch ...