首页 > Web开发 > 详细

ASP.NET Core使用Autofac

时间:2021-08-11 23:41:48      阅读:27      评论:0      收藏:0      [点我收藏+]

使用Autofac替换掉微软的DI

本文的项目为ASP.NET Core3.1,传统三层架构 在这就不过多介绍Autofac,直接上代码

Autofac官网:https://autofac.org/

技术分享图片

Program.cs的 IHostBuilder 方法内加上 .UseServiceProviderFactory(new AutofacServiceProviderFactory())(如下图)

技术分享图片

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

在Startup.cs内新增 ConfigureContainer 方法
属性介绍
RegisterAssemblyTypes:寄存器程序集类型
AsImplementedInterfaces:实现的接口
InstancePerDependency:实例依赖关系
PropertiesAutowired:属性自动连接
技术分享图片

        /// <summary>
        /// 配置Autofac容器替换微软的DI
        /// </summary>
        /// <param name="builder"></param>
        public void ConfigureContainer(ContainerBuilder builder)
        {
            var basePath = AppContext.BaseDirectory;
            //DALService所在程序集命名空间
            string DALPath = Path.Combine(basePath, "GraduationProject.DAL.dll");
            Assembly DAL = Assembly.LoadFrom(DALPath);
            //BLLService所在程序集命名空间
            string BLLPath = Path.Combine(basePath, "GraduationProject.BLL.dll");
            Assembly BLL = Assembly.LoadFrom(BLLPath);

            builder.RegisterAssemblyTypes(DAL).InstancePerDependency().PropertiesAutowired();
            builder.RegisterAssemblyTypes(BLL).AsImplementedInterfaces().InstancePerDependency().PropertiesAutowired();
        }

ASP.NET Core使用Autofac

原文:https://www.cnblogs.com/LaoPaoEr/p/15130165.html

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