.Net 5.0 批量依赖注入
原因:我们在.net 5.0 中使用依赖注入, 每一个服务都得注入一次,为了解决这个问题我们可以使用批量依赖注入
思路:在.net 5.0中注入服务我们需要用到 IServiceCollection 实现注入,这个时候我们可以想到使用扩展方法,反射的方式去实现,直接上代码
1.创建扩展方法类
1 /// <summary> 2 /// 依赖注入扩展方法 3 /// </summary> 4 public static class InjectionExtBL 5 { 6 /// <summary> 7 /// 批量注入 8 /// </summary> 9 /// <param name="services">扩展对象</param> 10 /// <param name="interfaceAssembly">接口</param> 11 /// <param name="implementAssembly">实现类</param> 12 public static void AddTransientExtension(this IServiceCollection services, Assembly interfaceAssembly, Assembly implementAssembly) 13 { 14 var interfaces = interfaceAssembly.GetTypes().Where(d => d.IsInterface);//拿到所有项目中所有的接口 15 var implements = implementAssembly.GetTypes();//拿到项目中所有的成员 16 foreach (var item in interfaces) 17 { 18 //拿到实现了上面接口的成员,如果没有就返回null 19 var type = implements.FirstOrDefault(t => item.IsAssignableFrom(t)); 20 //如果实现了,直接注入 21 if (type != null) 22 { 23 services.AddTransient(item, type); 24 } 25 } 26 } 27 }
2.在setup --> ConfigureServices中使用.
services.AddTransientExtension(Assembly.Load("OnlineTest.RepositoryInterface"), Assembly.Load("OnlineTest.Repository"));//批量注入仓储 services.AddTransientExtension(Assembly.Load("OnlineTest.BLInterface"), Assembly.Load("OnlineTest.BL"));//批量注入BL
本文来自博客园,作者:echo_sw,转载请注明原文链接:https://www.cnblogs.com/shenweif/p/16528743.html