我正在用NInject構建一個消息代理,並且我需要在容器中找到實現Consumes的所有實例,這是一個將該類標記爲能夠使用特定消息類型的接口。NInject中的Container.GetAllInstances <T>等效於什麼?
是否支持此方案?從內特
我正在用NInject構建一個消息代理,並且我需要在容器中找到實現Consumes的所有實例,這是一個將該類標記爲能夠使用特定消息類型的接口。NInject中的Container.GetAllInstances <T>等效於什麼?
是否支持此方案?從內特
答:
多分辨率(通過
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#
如果你,如果你沒有在由Romain's answer引用的線程討論的多態的情況,那麼你應該沒有任何問題,只要您正在使用Ninject 2.Ninject 1.x不包含此類支持。