首页 > Web开发 > 详细

.Net Core 3.1之IOC Auofac

时间:2020-03-22 20:38:28      阅读:63      评论:0      收藏:0      [点我收藏+]

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 Core 3.1之IOC Auofac

原文:https://www.cnblogs.com/xingzhu-nan/p/12547929.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!