.Net6 使用Autofac进行依赖注入
一、背景
刚接触.net 6,记录一下在.net6上是怎么使用Autofac进行动态的依赖注入的
二、注入方式
1、新建一个webapi项目,框架选择net 6
2、引用Nuget包---Autofac.Extensions.Dependency
3、在Program.cs上添加如下代码
1 2 3 4 5 6 | //依赖注入 builder.Host.UseServiceProviderFactory( new AutofacServiceProviderFactory()) //注册服务工厂 .ConfigureContainer<ContainerBuilder>(container => {<br> //添加依赖注入,AddModule是一个自定义的拓展方法,将依赖注入的方法单独提取出来,方便管理 builder.Services.AddModule(container, builder.Configuration); }); |
4、AddModule方法
public static IServiceCollection AddModule(this IServiceCollection services, ContainerBuilder builder, IConfiguration configuration) { //初始化配置文件 Type baseType = typeof(IDependency);//自定义的空类 //动态运行项目的类库 var compilationLibrary = DependencyContext.Default .RuntimeLibraries .Where(x => !x.Serviceable && x.Type == "project") .ToList(); var count1 = compilationLibrary.Count; List<Assembly> assemblyList = new List<Assembly>(); foreach (var _compilation in compilationLibrary) { try { assemblyList.Add(AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(_compilation.Name))); } catch (Exception ex) { Console.WriteLine(_compilation.Name + ex.Message); } } //注册程序集的方式添加依赖 builder.RegisterAssemblyTypes(assemblyList.ToArray()) .Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract)//过滤非抽象类,继承了IDependency接口的类 .AsSelf().AsImplementedInterfaces() .InstancePerLifetimeScope();//实例的生命周期 //单独注册依赖服务 builder.RegisterType<MemoryCacheService>().As<ICacheService>().SingleInstance(); return services; }
5、实现上诉步骤后,可实现.net 6形式的Autofac依赖注入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?