Dependency injection 使用IOC框架绑定到多个具体实现?

Dependency injection 使用IOC框架绑定到多个具体实现?,dependency-injection,inversion-of-control,ioc-container,Dependency Injection,Inversion Of Control,Ioc Container,我对DI/IOC容器的概念比较熟悉,之前我曾在项目中使用过它们。然而,对于这个新项目,没有现有的框架,我不得不选择一个 长话短说,在某些场景中,我们将为给定接口配置多个实现。环顾web,似乎使用任何主流框架选择性地绑定到其中一个实现都非常简单 但是,在某些上下文中,我们需要运行所有配置的实现。我在这里搜索了所有IOC标记的帖子,并试图浏览主要框架的文档(到目前为止,我查看了Unity、Ninject和Windsor),但文档通常比较稀少,我没有时间检查所有包的源代码 那么,有没有主流的IOC容器

我对DI/IOC容器的概念比较熟悉,之前我曾在项目中使用过它们。然而,对于这个新项目,没有现有的框架,我不得不选择一个

长话短说,在某些场景中,我们将为给定接口配置多个实现。环顾web,似乎使用任何主流框架选择性地绑定到其中一个实现都非常简单

但是,在某些上下文中,我们需要运行所有配置的实现。我在这里搜索了所有IOC标记的帖子,并试图浏览主要框架的文档(到目前为止,我查看了Unity、Ninject和Windsor),但文档通常比较稀少,我没有时间检查所有包的源代码


那么,有没有主流的IOC容器可以让我绑定到我的一项服务的所有配置的具体类型?

因此,不知何故,我错过了这个我第一次浏览Unity的机会……但我会回答我自己的问题

团结正是我想要的。

此外,对于像我这样从事国际奥委会狩猎和舞蹈的其他人来说,这一链接被证明是无价的。

当我第一次尝试解析已注册类型的所有实现时,有一件事吸引了我,那就是调用ResolveAll()时,将不会返回未命名(默认)类型的注册。只返回命名实例

因此:

IUnityContainer container=newunitycontainer();
container.RegisterType();
container.RegisterType(“两个”);
容器。注册表类型(“三”);
var instances=container.ResolveAll();
AreEqual(2,instances.Count,“MyFirstClass未被构造”);
IUnityContainer container = new UnityContainer();
container.RegisterType<IMyInterface, MyFirstClass>();
container.RegisterType<IMyInterface, MySecondClass>("Two");
container.RegisterType<IMyInterface, MyThirdClass>("Three");

var instances = container.ResolveAll<IMyInterface>();

Assert.AreEqual(2, instances.Count, "MyFirstClass doesn't get constructed");