ASP.NET Core使用Autofac
阿新 • • 發佈:2021-08-11
使用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(); }