Microsoft.Extensions.DependencyInjection是一个简单的DI容器;许多第三方的容器都提供了额外的功能。例如,Autofac允许在配置文件中配置服务。
ASP.NET Core使用Microsoft.Extensions.DependencyInjection,除此之外,还可以使用适配器配置它——使用其他第三方依赖注入容器,如Autofac、Rezolver、Scan、Neleus、CuteAnt、fm、Dryloc、Stashbox等。只需要以NuGet包的形式添加一个适配器,根据容器的需求进行初始化。
示例项目DIWithAutofac使用和之前的实现相同的HomeController和GreetingService,但它使用Autofac依赖注入容器适配器。为此,需要如下NuGet包和名称空间:
包
Autofac.Extensions.DependencyInjection
Microsoft.Extensions.DependencyInjection
名称空间
Autofac
Autofac.Extensions.DependencyInjection
Microsoft.Extensions.DependencyInjection
System
为了使用Autofac容器适配器,服务应与以前一样,在ServiceCollection中注册。现在不用创建IServiceProvider,而是使用来自Autofac的ContainerBuilder。可以使用调用Populate方法的ServiceCollection来填充该构建器。这种方法可以给这个容器添加数百个ASP.NET Core服务。这个容器还支持一些Register方法来添加托管服务。Build方法现在创建一个容器,并使用IContainer接口返回它: