L'unico modo è ottenere tutte le istanze utilizzando kernel.GetAll<IController>()
. Ninject non ha una mappatura di associazione impostata. L'implementazione viene determinata quando le istanze vengono risolte mediante l'iniezione o ricevono chiamate. Questo perché Ninject consente vincoli condizionali e impliciti.
Se si imposta un'applicazione MVC3, in realtà non si registrano i controller poiché Ninject determinerà quale controller caricare e cosa iniettare in esso. Lo fa creando pigramente un legame implicito.
Il più vicino possibile è estendere StandardKernel
e accedere al set di rilegature protetto e trovare tutti i binding che non sono condizionali. Una volta che hai tutti i binding non condizionali, potresti essere in grado di separare il binding, ma non ricordo esattamente come potrebbero essere nascosti dietro la classe StandardProvider
.
Che cosa stai facendo che è necessario conoscere la configurazione di binding esatto per una particolare interfaccia?
fonte
2011-10-27 13:22:55
Mi rendo conto che questo è per sempre, ma solo un posto dove ho bisogno di questo: sto costruendo un ServiceHost basato su Ninject per WCF, per fare in modo che Ninject costruisca le istanze del servizio per me. Devo fornire al costruttore ServiceHost il tipo di implementazione del servizio concreto, non l'interfaccia del servizio. –