在NInject中,Container.GetAllInstances <T>的等价物是什么?

pns*_*eld 5 dependency-injection ninject ioc-container

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

这种情况是否受支持?

Rom*_*ier 5

来自Nate的回答:

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

kernel.Bind<IWorker>().To<WorkerA>();
kernel.Bind<IWorker>().To<WorkerB>();
kernel.Bind<IWorker>().To<WorkerC>();
Run Code Online (Sandbox Code Playgroud)

然后:

kernel.GetAll<IWorker>();
Run Code Online (Sandbox Code Playgroud)

它将返回3项.然而,即使IWorkerA,IWorkerBIWorkerC实施IWorker,Ninject不会看的绑定 IWorkerAWorkerA时候你问IWorker.

见:

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