C# 如何将Autofac与Asp.net core 2.2集成
我有以下指南: 在最后一步,它显示:C# 如何将Autofac与Asp.net core 2.2集成,c#,asp.net-core,dependency-injection,.net-core,autofac,C#,Asp.net Core,Dependency Injection,.net Core,Autofac,我有以下指南: 在最后一步,它显示: // Create the IServiceProvider based on the container. return new AutofacServiceProvider(this.ApplicationContainer); 但是,在Asp Net core 2.2的最新版本中,函数ConfigureServices(IServiceCollection services)返回无效 public void ConfigureServices(ISe
// Create the IServiceProvider based on the container.
return new AutofacServiceProvider(this.ApplicationContainer);
但是,在Asp Net core 2.2的最新版本中,函数ConfigureServices(IServiceCollection services)返回无效
public void ConfigureServices(IServiceCollection services)
如何根据最新的更改重构代码?在您的解决方案中,您在ConfigureServices方法中使用了
void
返回类型:
public void ConfigureServices(IServiceCollection services)
实际上,您可以设置并返回IServiceProvider:
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);
}
请参阅中的更多详细信息,只需将
void
替换为IServiceProvider
。事实上,它在@john起作用了。当我即将发布基本相同的内容时,您可能希望在您的答案中添加一些文本来解释它的作用,即使它只是引用(和链接到)文档:)这与Autofac的教程完全相同。主要是我们可以更改ConfigService函数的declare以返回IServiceProvider