.net core批量注入实现类

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

1  public class RuntimeHelper
2     {
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自己的依赖注入容器挺好的

 

转载于:https://www.cnblogs.com/Spinoza/p/9984489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值