5

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

是否支持此场景?

4

2 回答 2

5

内特的回答:

多分辨率(via GetAll)目前不是多态的。这意味着它只会考虑来自您指定的确切接口的绑定。如果你这样做:

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

接着:

kernel.GetAll<IWorker>();

它将返回 3 个项目。但是,即使IWorkerA,IWorkerBIWorkerCimplement ,当您请求 时IWorker,Ninject 也不会查看 IWorkerAto的绑定。WorkerAIWorker

看 :

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

于 2009-09-08T15:48:40.030 回答
1

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

于 2009-09-08T19:25:33.443 回答