我正在使用NInject构建一个消息代理,我需要在容器中找到实现Consumes的所有实例,这个接口将该类标记为能够使用特定的消息类型。
是否支持此方案?
答案 0 :(得分:5)
来自Nate的回答:
多分辨率(通过
GetAll
)是 目前不是多态的。这意味着 它只会考虑绑定 从您指定的确切界面。 如果你这样做:kernel.Bind<IWorker>().To<WorkerA>(); kernel.Bind<IWorker>().To<WorkerB>(); kernel.Bind<IWorker>().To<WorkerC>();
然后:
kernel.GetAll<IWorker>();
它将返回3项。但是,甚至 如果
IWorkerA
,IWorkerB
和IWorkerC
实施IWorker
, Ninject不会查看来自的绑定 当你提问时IWorkerA
到WorkerA
IWorker
。
见:
http://groups.google.com/group/ninject/browse_thread/thread/7b6afa06099bc97a#
答案 1 :(得分:1)
如果您没有Romain's answer引用的线程中讨论的多态情况,那么只要您使用Ninject 2就不会有任何问题.Ninject 1.x不包括这种支持。