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运行,调用接口如下: