Dependency injection 容器的等价物是什么。GetAllInstances<;T>;在NInject?

Dependency injection 容器的等价物是什么。GetAllInstances<;T>;在NInject?,dependency-injection,ioc-container,ninject,Dependency Injection,Ioc Container,Ninject,我正在用NInject构建一个MessageBroker,我需要找到容器中实现Consumes的所有实例,Consumes是一个将类标记为能够使用特定消息类型的接口 支持此方案吗?来自Nate的回答: 多分辨率(通过GetAll)是 目前没有多态性。这意味着 它只考虑绑定 从您指定的确切接口。 如果您这样做: kernel.Bind<IWorker>().To<WorkerA>(); kernel.Bind<IWorker>().To<WorkerB&g

我正在用NInject构建一个MessageBroker,我需要找到容器中实现Consumes的所有实例,Consumes是一个将类标记为能够使用特定消息类型的接口

支持此方案吗?

来自Nate的回答:

多分辨率(通过
GetAll
)是 目前没有多态性。这意味着 它只考虑绑定 从您指定的确切接口。 如果您这样做:

kernel.Bind<IWorker>().To<WorkerA>();
kernel.Bind<IWorker>().To<WorkerB>();
kernel.Bind<IWorker>().To<WorkerC>();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
然后:

kernel.GetAll<IWorker>();
kernel.GetAll();
它将返回3个项目。然而,即使 如果
IWorkerA
IWorkerB
,以及
IWorkerC
实施
IWorker
, Ninject不会查看来自的绑定
IWorkerA
WorkerA
当您询问时 对于
IWorker

见:


如果没有引用的线程中讨论的多态情况,那么只要使用Ninject 2,就不应该有任何问题。Ninject 1.x不包括这种支持