.Net Core 3.1之IOC Auofac

IOC-------控制反转

既然全都交给容器来管理,自然容器可以管理对象的生命周期,还有AOP(在注入的时候进行一些逻辑)

.Net Core 内置了一个IOC容器,在ServiceCollection中,有三个生命周期

AddTransient-----瞬时,用的最多

AddScoped-----一个请求只有一个实例

AddSingleton-----一个线程只有一个实例

但是ServiceCollection也有局限性:无法批量注入,无法实现AOP。

解决方案:利用第三方IOC容器,如Atuofac

Step1:引入两个程序集Autofac.Extras.DynamicProxy(Autofac的动态代理,它依赖Autofac,所以可以不用单独引入Autofac)、Autofac.Extensions.DependencyInjection(Autofac的扩展)

Step2:在Program.cs中替代旧有容器

  public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

Step3:在Startup.cs中添加ConfigureContainer方法

 public void ConfigureContainer(ContainerBuilder containerBuilder)
        {
            var assemblyFiles =  Assembly.LoadFrom("filePathName");
            //指定已扫描程序集中的类型注册为提供所有其实现的接口。
            containerBuilder.RegisterAssemblyTypes(assemblyFiles).AsImplementedInterfaces();
        }

 

上一篇:.net core3.1 下由Autofac接管IOC


下一篇:Autofac.md