• .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();
            }
  • 相关阅读:
    AD中各层的说明
    Altium designer的PCB设计规则
    python 的基础 学习 第三天 编码的初始
    python 的基础 学习 第三
    python的基础初始第二天
    python 的基础 学习 第一天
    Liunx ls命令
    Liunx cd命令
    CentOS 7系统关闭yum自动下载更新
    【转】XenServer体系架构解析
  • 原文地址:https://www.cnblogs.com/xingzhu-nan/p/12547929.html
Copyright © 2020-2023  润新知