【发布时间】:2010-11-26 13:16:03
【问题描述】:
我正在使用 NInject 构建一个消息代理,我需要在容器中找到所有实现 Consumes 的实例,该接口将类标记为能够使用特定的消息类型。
是否支持这种情况?
【问题讨论】:
标签: dependency-injection ioc-container ninject
我正在使用 NInject 构建一个消息代理,我需要在容器中找到所有实现 Consumes 的实例,该接口将类标记为能够使用特定的消息类型。
是否支持这种情况?
【问题讨论】:
标签: dependency-injection ioc-container ninject
内特的回答:
多分辨率(通过
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#
【讨论】:
如果您没有Romain's answer 引用的线程中讨论的多态情况,那么只要您使用 Ninject 2,您就不会有任何问题。Ninject 1.x 没有包括这种支持。
【讨论】: