NInject中的Container.GetAllInstances <t>的等价物是什么?</t>

时间:2009-09-08 15:36:40

标签: dependency-injection ioc-container ninject

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

是否支持此方案?

2 个答案:

答案 0 :(得分:5)

来自Nate的回答:

  

多分辨率(通过GetAll)是   目前不是多态的。这意味着   它只会考虑绑定   从您指定的确切界面。   如果你这样做:

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

然后:

kernel.GetAll<IWorker>();
     

它将返回3项。但是,甚至   如果IWorkerAIWorkerB和   IWorkerC实施IWorker,   Ninject不会查看来自的绑定   当你提问时IWorkerAWorkerA   IWorker

见:

http://groups.google.com/group/ninject/browse_thread/thread/7b6afa06099bc97a#

答案 1 :(得分:1)

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