码迷,mamicode.com
首页 > Web开发 > 详细

.net core批量注入实现类

时间:2018-11-19 20:04:15      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:var   das   ati   where   实现   映射   名称   color   分享   

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自己的依赖注入容器挺好的

 

.net core批量注入实现类

标签:var   das   ati   where   实现   映射   名称   color   分享   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!