Autofac 中间件使用
Posted ganqiyin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
以上是关于Autofac 中间件使用的主要内容,如果未能解决你的问题,请参考以下文章
Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]
Autofac 集成测试 在 ConfigureContainer 之后进行 Mock 注入
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段