.NET CORE-Auto整合至MVC中
- 在Program.cs中使用Autofac工厂去替代默认工厂:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging(logging=> { logging.AddLog4Net("log4net.Config"); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseServiceProviderFactory(new AutofacServiceProviderFactory());
- 在Startup.cs中添加ConfigureContainer()方法去注册关系:
public void ConfigureContainer(ContainerBuilder containerBuilder) { containerBuilder.RegisterType<TestServiceA>().As<ITestServiceA>(); // containerBuilder.RegisterType<TestServiceB>().As<ITestServiceB>(); containerBuilder.RegisterType<TestServiceC>().As<ITestServiceC>(); }
注意:Autofac中仍然接管了Startup.cs原有的ConfigureServices()方法,即在该方法中进行的服务注册,也是有效的,如下面代码中对 ITestServiceB 和 TestServiceB 的关联也仍然有效
public void ConfigureServices(IServiceCollection services) { services.AddTransient<ITestServiceB, TestServiceB>(); }
- 通过控制器构造函数进行注入。