ASP.NET Core 3.1 WebApi 系列【三】使用Autofac实现依赖注入

.NET Core 3.0 引入了具有强类型容器配置的功能。

它提供了 ConfigureContainer 方法,使用Autofac来注册事物,而不必通过 ServiceCollection 来注册事物。

1.首先我们需要在 Program.cs 中修改服务工厂,内置是 ServiceProviderFactory 的,我们将要指定为: AutofacServiceProviderFactory 。

 

 

 

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

2.Startup.cs 中添加方法 ConfigureContainer ,并添加以下代码。

 

 

 

#region 依赖注入
        public void ConfigureContainer(ContainerBuilder builder)
        {
            var basePath = AppContext.BaseDirectory;
            string IServicePath = Path.Combine(basePath, "WebApplication.dll");
            Assembly IService = Assembly.LoadFrom(IServicePath);
            builder.RegisterAssemblyTypes(IService).InstancePerDependency().PropertiesAutowired().AsImplementedInterfaces();
        }
        #endregion

注意:其中WebApplication.dll为接口和实现接口类的所在项目的dll文件,与项目名称相同;

 

测试:新增两个接口与实现类,结构如图

 

 

 将接口写入构造函数,即可引用接口中的方法。ctrl+f5运行,调用接口如下:

 

 

 

 

posted @ 2022-02-16 14:58  你去了龙城我留了姑苏  阅读(495)  评论(0编辑  收藏  举报