Dependency injection 容器的等价物是什么。GetAllInstances<;T>;在NInject?
我正在用NInject构建一个MessageBroker,我需要找到容器中实现Consumes的所有实例,Consumes是一个将类标记为能够使用特定消息类型的接口 支持此方案吗?来自Nate的回答: 多分辨率(通过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
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不包括这种支持