La única forma es obtener todas las instancias usando kernel.GetAll<IController>()
. Ninject no tiene una asignación de vinculación establecida. La implementación se determina cuando las instancias se resuelven mediante inyección o reciben llamadas. Esto es porque Ninject permite enlaces condicionales e implícitos.
Si configura una aplicación MVC3, en realidad no registrará sus controladores ya que Ninject determinará qué controlador cargar y qué inyectar en él. Hace esto creando perezosamente un enlace implícito.
Lo más cercano que puede venir es ampliar StandardKernel
y acceder al conjunto de enlaces protegidos y encontrar todas las vinculaciones que no son condicional. Una vez que tenga todos los enlaces no condicionales, es posible que pueda separar el enlace, pero no puedo recordar exactamente como pueden estar ocultos detrás de la clase StandardProvider
.
¿Qué estás haciendo que necesitas saber la configuración de enlace exacta para una interfaz en particular?
Me doy cuenta de que esto es para siempre, pero solo un lugar donde lo necesito: estoy construyendo un ServiceHost basado en Ninject para WCF, para que Ninject cree las instancias de servicio para mí. Necesito darle al constructor ServiceHost el tipo de implementación del servicio concreto, no la interfaz del servicio. –