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