NetCore6.0 使用微软自带依赖注入
依赖注入工厂方法
1 /// <summary> 2 /// 注册依赖注入 3 /// </summary> 4 /// <param name="serviceCollection"></param> 5 /// <returns></returns> 6 public static IServiceCollection AddDIRegister(this IServiceCollection serviceCollection) 7 { 8 //反射服务类 当前程序集依赖注入 9 var services = Assembly.GetAssembly(typeof(CaseService)).GetTypes().Where(a => a.Name.EndsWith("Service") && a.IsAnsiClass && !a.IsAbstract); 10 foreach (var serviceItem in services) 11 { 12 //通过服务类匹配接口类 13 var iServiceItem = serviceItem.GetInterfaces().FirstOrDefault(w => w.Name == $"I{serviceItem.Name}"); 14 serviceCollection.AddSingleton(iServiceItem, serviceItem); 15 } 16 17 //跨程序集依赖注入(方法1) 程序集名称 "Tellyes.Unicorn.CaseService" .dll省略 18 var servicesUnicorn = Assembly.Load("Tellyes.Unicorn.CaseService").GetTypes().Where(w => w.Name.Contains("Service")); 19 20 foreach (var serviceItemUnicorn in servicesUnicorn) 21 { 22 //通过服务类匹配接口类 23 var iServiceItemUnicorn = serviceItemUnicorn.GetInterfaces().FirstOrDefault(w => w.Name == $"I{serviceItemUnicorn.Name}"); 24 if (iServiceItemUnicorn != null && serviceItemUnicorn != null) 25 serviceCollection.AddSingleton(iServiceItemUnicorn, serviceItemUnicorn); 26 } 27 //通过xml配置进行跨程序集依赖注入(方法2) 逗号前面命名空间,逗号后面程序集命名空间 28 //var iType = Type.GetType("Tellyes.Unicorn.IBGEService,Tellyes.Unicorn.ICaseService"); 29 //var pType = Type.GetType("Tellyes.Unicorn.BGEService,Tellyes.Unicorn.CaseService"); 30 //if (iType != null && pType != null) 31 // serviceCollection.AddSingleton(iType, pType); 32 33 return serviceCollection; 34 }
通过xml配置需设置程序集属性节点
1 <PropertyGroup> 重点红色部分 2 <TargetFramework>net6.0</TargetFramework> 3 <ImplicitUsings>enable</ImplicitUsings> 4 <Nullable>enable</Nullable> 5 <AssemblyName>Tellyes.Unicorn.CaseService</AssemblyName> 6 <RootNamespace>Tellyes.Unicorn.CaseService</RootNamespace> 7 </PropertyGroup>
注意:构造函数内注入的一定是接口,而不是服务。
启动文件注册依赖注入
1 var builder = WebApplication.CreateBuilder(args);
2 builder.Services.AddDIRegister();
autofac ninject 这两个依赖注入组件也不错
参考地址:https://www.cnblogs.com/qingjiawen/p/16253732.html
https://blog.csdn.net/wulaihaoa/article/details/103932954
https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-7.0
https://www.cnblogs.com/jianghaidong/p/13415124.html

浙公网安备 33010602011771号