zoukankan      html  css  js  c++  java
  • .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();
            }
  • 相关阅读:
    问题账户需求分析
    2017年秋季个人阅读计划
    阅读笔记01
    个人总结
    第二阶段站立会议07
    第二阶段站立会议06
    第二阶段站立会议05
    第二阶段站立会议04
    第二阶段站立会议03
    学习进度条(第十五周)
  • 原文地址:https://www.cnblogs.com/xingzhu-nan/p/12547929.html
Copyright © 2011-2022 走看看