.netcore之DI批量注入(支持泛型) - xms
一旦系统内模块比较多,按DI标准方法去逐个硬敲AddScoped/AddSingleton/AddTransient缺乏灵活性且效率低下,所以批量注入提供了很大的便捷性,特别是对于泛型的服务类,下面介绍一下我在xms系统中应用的DI便捷工具:
1. 先来个dll助手
无外部依赖,可直接复用
1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.IO; 5 using System.Reflection; 6 using System.Runtime.Loader; 7 8 namespace Xms.Infrastructure.Utility 9 { 10 public class AssemblyHelper 11 { 12 public static List<Assembly> GetAssemblies(string searchPattern = "") 13 { 14 List<Assembly> assemblies = new List<Assembly>(); 15 if (searchPattern.HasValue()) 16 { 17 DirectoryInfo root = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); 18 foreach (FileInfo f in root.GetFiles(searchPattern)) 19 { 20 assemblies.Add(AssemblyLoadContext.Default.LoadFromAssemblyPath(f.FullName)); 21 } 22 } 23 else 24 { 25 assemblies.AddRange(AppDomain.CurrentDomain.GetAssemblies()); 26 } 27 return assemblies; 28 } 29 30 public static List<Type> GetClassOfType(Type assignTypeFrom, string searchPattern = "") 31 { 32 var assemblies = GetAssemblies(searchPattern); 33 var result = new List<Type>(); 34 try 35 { 36 foreach (var a in assemblies) 37 { 38 Type[] types = a.GetTypes(); 39 40 if (types == null) 41 { 42 continue; 43 } 44