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  }
View Code

 

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                 });
View Code

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         }
View Code

 

posted @ 2020-06-28 17:27  细品人生  阅读(237)  评论(0编辑  收藏  举报