分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

.net core批量注入实现类

发布时间:2023-09-06 02:23责任编辑:沈小雨关键词:暂无标签

1.获取实现类程序集方法

1 ?public class RuntimeHelper2 ????{3 ????????//通过程序集的名称加载程序集4 ????????public static Assembly GetAssemblyByName(string assemblyName)5 ????????{6 ????????????return AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(assemblyName));7 ????????}8 ????}

2.遍历实现类,批量注入映射关系

 1 ?public static void AddAssembly(this IServiceCollection service, string assemblyName 2 ????????????,ServiceLifetime serviceLifetime = ServiceLifetime.Scoped) 3 ????????{ 4 ????????????var assembly = RuntimeHelper.GetAssemblyByName(assemblyName); 5 ?6 ????????????var types = assembly.GetTypes(); 7 ????????????var list = types.Where(u => u.IsClass && !u.IsAbstract && !u.IsGenericType).ToList(); 8 ?9 ????????????foreach (var type in list)10 ????????????{11 ????????????????var interfaceList = type.GetInterfaces();12 ????????????????if (interfaceList.Any())13 ????????????????{14 ????????????????????var inter = interfaceList.First();15 16 ????????????????????switch (serviceLifetime)17 ????????????????????{18 ????????????????????????case ServiceLifetime.Transient:19 ????????????????????????????service.AddTransient(inter, type);20 ????????????????????????????break;21 ????????????????????????case ServiceLifetime.Scoped:22 ????????????????????????????service.AddScoped(inter, type);23 ????????????????????????????break;24 ????????????????????????case ServiceLifetime.Singleton:25 ????????????????????????????service.AddSingleton(inter, type);26 ????????????????????????????break;27 ????????????????????????28 ????????????????????}29 ????????????????????service.AddScoped(inter, type);30 ????????????????}31 ????????????}32 ????????}33 ????}

3.在Startup类中使用

4.这样就实现了类似于autofac的功能,其实.net core自己的依赖注入容器挺好的

.net core批量注入实现类

原文地址:https://www.cnblogs.com/Spinoza/p/9984489.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved