ASP.NET CORE 3.1 WebApi 引用Autofac

一、创建类库

项目结构如图,创建Model、IRepo、Repo、IServ、Serv五个类库

二、在Controllers里面调用

public WeatherForecastController(ILogger<WeatherForecastController> logger,IDemoServ demoServ)
        {
            _logger = logger;
            _demoServ = demoServ;
        }
/// <summary>
        /// 获取Demo数据
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public string GetDemos() {
            var demo = _demoServ.GetDemos();
            return "";
        }

三、引入Autofac包

<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />

四、在Program.cs中添加工厂服务者

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

五、在Startup.cs中添加如下方法

public void ConfigureContainer(ContainerBuilder builder)
        {
            var basePath = AppContext.BaseDirectory;
            var servicesDllFile = Path.Combine(basePath, "AdminCore.Serv.dll");
            var repositoryDllFile = Path.Combine(basePath, "AdminCore.Repo.dll");

            if (!(File.Exists(servicesDllFile) && File.Exists(repositoryDllFile)))
            {
                var msg = "Repo.dll和serv.dll 丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。";
                throw new Exception(msg);
            }

            // 获取 Service.dll 程序集服务,并注册
            var assemblysServices = Assembly.LoadFrom(servicesDllFile);
            builder.RegisterAssemblyTypes(assemblysServices)
                      .AsImplementedInterfaces()
                      .InstancePerDependency()
                      .PropertiesAutowired();

            // 获取 Repository.dll 程序集服务,并注册
            var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);
            builder.RegisterAssemblyTypes(assemblysRepository)
                   .AsImplementedInterfaces()
                   .PropertiesAutowired()
                   .InstancePerDependency();
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值