Autofac 中间件使用
0-添加 Autofac.Extensions.DependencyInjection 引用
1-NetCore 2.x 依赖注入模式

1 # 返回类型 改成 IServiceProvider 2 public IServiceProvider ConfigureServices(IServiceCollection services) 3 { 4 var builder = new ContainerBuilder(); 5 builder.Populate(services); 6 builder.RegisterAssemblyTypes(Assembly.Load("GR.Interfaces"), Assembly.Load("GR.Services")) 7 .AsSelf() 8 .AsImplementedInterfaces() 9 .InstancePerLifetimeScope() 10 .PropertiesAutowired(); 11 12 var Container = builder.Build(); 13 return new AutofacServiceProvider(Container); 14 }
2-NetCore 3.x 依赖注入模式
2.1-Program 中添加 UseServiceProviderFactory(new AutofacServiceProviderFactory())

1 public static IHostBuilder CreateHostBuilder(string[] args) => 2 Host.CreateDefaultBuilder(args) 3 .UseServiceProviderFactory(new AutofacServiceProviderFactory())//添加这行代码 4 .ConfigureWebHostDefaults(webBuilder => 5 { 6 webBuilder.UseStartup<Startup>(); 7 });
2.2-Startup 中添加方法 ConfigureContainer(ContainerBuilder builder)

1 public void ConfigureContainer(ContainerBuilder builder) 2 { 3 ////过滤器注册 4 //builder.RegisterAssemblyTypes(Assembly.Load("IoC.Web")) 5 // .Where(t => t.BaseType.FullName.Contains("Filter")) 6 // .AsSelf(); 7 // 8 9 builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"), 10 Assembly.Load("IoC.Domain")) 11 .Where(x => typeof(IScopedDenpency).IsAssignableFrom(x) && !x.IsAbstract) 12 .AsSelf() 13 .AsImplementedInterfaces() 14 .InstancePerLifetimeScope() 15 .PropertiesAutowired(); 16 17 builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"), 18 Assembly.Load("IoC.Domain")) 19 .Where(x => typeof(ISingletonDenpency).IsAssignableFrom(x) && !x.IsAbstract) 20 .AsSelf() 21 .AsImplementedInterfaces() 22 .SingleInstance() 23 .PropertiesAutowired(); 24 25 26 builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"), 27 Assembly.Load("IoC.Domain")) 28 .Where(x => typeof(ITraintDenpency).IsAssignableFrom(x) && !x.IsAbstract) 29 .AsSelf() 30 .AsImplementedInterfaces() 31 .InstancePerDependency() 32 .PropertiesAutowired(); 33 34 //builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"), Assembly.Load("IoC.Domain")) 35 // .AsSelf() 36 // .AsImplementedInterfaces() 37 // .InstancePerLifetimeScope() 38 // .PropertiesAutowired(); 39 }
漫漫人生,唯有激流勇进,不畏艰险,奋力拼搏,方能中流击水,抵达光明的彼岸
分类:
ASP.NET Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2013-06-28 PowerDesigner16工具学习笔记-建立CDM