.NET Core 键控依赖注入

The*_*yer 2 dependency-injection .net-core

Unity、Autofac 以及可能还有相当多的其他依赖注入包都支持“键控依赖注入容器”,允许注册接口的多个实现并通过键(无论是字符串、整数、枚举还是其他任何形式)唯一地标识它们)。

然而,到目前为止我至少可以看到,.NET Core 没有这样的功能,如果我要尝试实现这样的功能,我必须采取解决方法找到一些 hacky 解决方案。我想知道,是否有特殊原因没有在 .NET Core 中引入?

统一示例:

     container.RegisterType<IService, ServiceImplementation1>("1");
     container.RegisterType<IService, ServiceImplementation2>("2");
Run Code Online (Sandbox Code Playgroud)

Autofac 示例:

     builder.RegisterType<ServiceImplementation1>().Keyed<IService>("1");
     builder.RegisterType<ServiceImplementation2>().Keyed<IService>("2");
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 5

...,是否有特殊原因没有在 .NET Core 中引入?

简短回答:是的

参考默认服务容器替换

内置服务容器旨在满足框架和大多数消费者应用程序的需求。我们建议使用内置容器,除非您需要内置容器不支持的特定功能,例如:

  • 财产注入
  • 基于名称的注入(又名键控)
  • 子容器
  • 定制生命周期管理
  • Func 对延迟初始化的支持
  • 基于公约的注册

注意:强调我的