asp.net core 3.1 autofac配置


nuget引入包

  Autofac (5.2.0)

  Autofac.Extensions.DependencyInjection (6.0.0)

 

1、替換默認容器

 修改Program.cs下的CreateHostBuilder

    UseServiceProviderFactory(new AutofacServiceProviderFactory())

2、批量注入

  Startup.cs中添加

   public void ConfigureContainer(ContainerBuilder builder){
    Assembly service = Assembly.Load("AutofacNetCore.Service");
    Assembly iservice = Assembly.Load("AutofacNetCore.IService");  
    builder.RegisterAssemblyTypes(service, iservice)
    .Where(t => t.FullName.EndsWith("Service") && !t.IsAbstract) //類名以service結尾,且類型不能是抽象的 
    .InstancePerLifetimeScope() //生命周期,,
    .AsImplementedInterfaces()
    .PropertiesAutowired(); //屬性注入
   }

   如果需要在controller中使用屬性注入,則需要修改Stratup.cs中的ConfigureServices方法和ConfigureContainer方法

ConfigureServices:
  services.AddControllersWithViews().AddControllersAsServices();

ConfigureContainer:
  var controllerBaseType = typeof(ControllerBase); 
  builder.RegisterAssemblyTypes(typeof(Program).Assembly)
  .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
  .PropertiesAutowired();

3、使用

  

 

       紅色為構造函數注入,藍色為屬性注入

  屬性注入必須為public

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM