关于c#:如何将Autofac与Asp.net core 2.2集成

How to integrate Autofac with Asp.net core 2.2

我已遵循以下指南:https://autofac.readthedocs.io/en/latest/integration/aspnetcore.html

在最后一步,它显示:

1
2
// Create the IServiceProvider based on the container.
return new AutofacServiceProvider(this.ApplicationContainer);

但是,最新版本的Asp Net core 2.2中,函数ConfigureServices(IServiceCollection services)返回void

1
public void ConfigureServices(IServiceCollection services)

如何根据最新更改重构代码?


在您的解决方案中,您在ConfigureServices方法中使用了void返回类型:

1
public void ConfigureServices(IServiceCollection services)

实际上,您可以设置并返回IServiceProvider

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Startup
{
  public IContainer Container { get; private set; }

  // ...

  public IServiceProvider ConfigureServices(IServiceCollection services)
  {
    // create new container builder
    var containerBuilder = new ContainerBuilder();
    // populate .NET Core services
    containerBuilder.Populate(services);
    // register your autofac modules
    containerBuilder.RegisterModule(new ApiModule());

    // build container
    Container = containerBuilder.Build();

    // return service provider
    return new AutofacServiceProvider(Container);
}

在官方文档中查看更多详细信息