借助ConfigureContainer方法,要先在Program类中挂载AddAutofac方法。
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args).ConfigureServices(services => services.AddAutofac()) .UseStartup<Startup>(); }然后在Startup类中加入ConfigureContainer方法。
public void ConfigureContainer(ContainerBuilder builder) { builder.RegisterModule(new DefaultModule()); }例中的DefaultModule类按照Autofac的通用方式实现。
public class DefaultModule : Module { protected override void Load(ContainerBuilder builder) { builder.RegisterType<HelloWorld>().As<IHelloWorld>(); } }如果不想使用ConfigureContainer方法,也可以直接利用ConfigureServices方法:
public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule<DefaultModule>(); containerBuilder.Populate(services); var container = containerBuilder.Build(); return new AutofacServiceProvider(container); }需要注意的是,使用这种方式时,ConfigureServices方法的返回类型要从void改成IServiceProvider。