2009-09-08 8 views
5

Я создаю брокер сообщений с NInject, и мне нужно найти все экземпляры в контейнере, которые реализуют Consumes, интерфейс, который помечает класс как способный потреблять определенный тип сообщения.Что такое эквивалент Container.GetAllInstances <T> в NInject?

Поддерживается ли этот сценарий?

ответ

5

Ответ от Nate:

Multi-разрешение (через GetAll) является в настоящее время не полиморфный. Это означает, что он будет рассматривать только привязки от точного интерфейса, который вы указали. Если вы сделаете это:

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

И потом:

Это вернет 3 пунктов. Однако, даже если IWorkerA, IWorkerB и IWorkerC реализации IWorker, Ninject не будет смотреть на переплетах от IWorkerA к WorkerA когда вы спросите для IWorker.

См:

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

1

Если вы, если вы не имеете полиморфный ситуацию, как обсуждалось в теме, на которую ссылается Romain's answer, то вы не должны иметь каких-либо проблем до тех пор, вы используете Ninject 2. Ninject 1.x не включил такую ​​поддержку.

 Смежные вопросы

  • Нет связанных вопросов^_^