1. 程式人生 > >.net core批量注入實現類

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