2009-09-08 8 views

Antwort

5

Antwort von Nate:

Multi-Auflösung (via GetAll) ist derzeit nicht polymorph. Das bedeutet , dass nur die Bindungen von der exakten Schnittstelle berücksichtigt werden, die Sie angeben. Wenn Sie dies tun:

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

Und dann:

Es wird 3 Artikel zurückgeben. Aber auch wenn IWorkerA, IWorkerB und IWorkerCIWorker implementieren, Ninject nicht an Bindungen von IWorkerA-WorkerA suchen, wenn Sie für IWorker fragen.

See:

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

1

Wenn Sie, wenn Sie nicht die polymorphe Situation wie im Thread diskutiert, die von Romain's answer verwiesen wird, dann sollten Sie keine Probleme haben, solange Sie verwenden Ninject 2. Ninject 1.x hat diese Art von Unterstützung nicht enthalten.