Esto puede ser una pregunta estúpida, pero estoy viendo las fuentes de Ninject y no veo a NInject registrando su propia fábrica de controladores. Tampoco veo ninguna clase IControllerFactory
en el ensamblaje Ninject.Web.Mvc
. ¿Me estoy perdiendo de algo? ¿Cómo crea Ninject el controlador e inyecta parámetros en el constructor?¿Cómo crea Ninject el controlador en ASP.NET MVC?
Respuesta
- digamos que estamos buscando "/ Tareas/Índice".
- Las aplicaciones Ninject MVC usan ahora
DefaultControllerFactory
, lo mismo que las aplicaciones que no son Ninject. DefaultControllerFactory
encuentra el tipo de controlador (TaskController
).DefaultControllerFactory
tiene clase interna llamadaDefaultControllerActivator
.DefaultControllerActivator
tiene un método llamadoCreate
, que devuelve la instancia del controlador.DefaultControllerFactory
preguntaDefaultControllerActivator
paraTaskController
tipo instancia.DefaultControllerActivator.Create
utilizaIDependencyResolver
. Aquí es donde entraNinject
. Dado queNinject
implementa su propio resolver y lo establece al inicio de la aplicación, obtiene una solicitud para la instanciaTaskController
.- El resto es fácil.
Ninject
encuentra constructor para este tipo, inyecta parámetros, devuelve instancia de controlador.
MVC3 ahora recomienda el uso de la interfaz IDependencyResolver
en lugar del antiguo IControllerFactory
cuando se trata de DI. Puede ver más detalles de esta interfaz here.
This is the new Ninject class responsable de inyectar las dependencias.
Dado que los controladores son de tipo concreto, Ninject se autoajustable. A continuación se muestra un fragmento del ninject.complex.com
Tenga en cuenta que solo los tipos de concreto pueden ser autoalineables; los tipos e interfaces abstractos no funcionarán. Además, si solicita una instancia de un tipo que se pueda unir automáticamente y no haya enlaces definidos para el tipo , Ninject creará automáticamente un enlace automático implícito. Es depende de ti si quieres definir tus enlaces explícitamente, o deja que Ninject lo resuelva.
Si necesita insertar parámetros en el constructor. Puede crear una clase hereda de INinjectModule
y hacer el enlace allí.
- 1. Ninject + ASP.NET MVC + InRequestScope
- 2. Asp.net Mvc: Ninject - IPrincipal
- 3. ASP.Net MVC 3, Ninject y Quartz.Net - ¿Cómo?
- 4. Ninject con formularios web ASP.Net y MVC
- 5. ASP.NET MVC: Controlador simulado.Url.Action
- 6. asp.net controlador genérico mvc
- 7. ASP.NET MVC crea la URL absoluta desde el código C#
- 8. ¿Cómo trabajo con Ninject en una aplicación web ASP.NET MVC?
- 9. pase el diccionario al controlador asp.net mvc
- 10. Deshabilitar condicionalmente el controlador MVC de ASP.NET
- 11. ¿Cómo consigo ninject 2.0 trabajando con asp.net mvc 2?
- 12. ASP.NET MVC Controlador Dependencias (StructureMap)
- 13. ¿Cómo debe usar el patrón UnitofWork en mi sitio asp.net-mvc (usando nhibernate y ninject)
- 14. MVC Base Controller y Ninject
- 15. Redirigir controlador autorizado en ASP.NET MVC
- 16. ¿Cómo pruebo el método OnActionExecuting de mi controlador asp.net-mvc?
- 17. ¿Cómo cierras una página ASP.NET MVC desde el controlador?
- 18. Ninject 2 y MVC 2.0
- 19. ¿Ninject con un controlador base?
- 20. ASP.NET MVC, Ninject, instancia única por solicitud de múltiples constructores
- 21. Diseño de acciones del controlador ASP.NET MVC
- 22. Uso de ASP.NET MVC 2 con Ninject 2 desde cero
- 23. Ciclo de vida del controlador ASP.NET MVC
- 24. Asp.Net Mvc - Cómo tener un "controlador" en la vista compartida
- 25. cómo acceder a scriptData desde uploadify en asp.net Controlador MVC
- 26. ¿Cómo accedo a Request.cookies en un controlador ASP.NET MVC?
- 27. gama Javascript para ASP.NET MVC controlador
- 28. Ninject + ASP.net MVC + Entity Framework: ¿cuándo se elimina mi contexto?
- 29. ASP.NET MVC 3 Ninject suscripciones personalizado y proveedor de funciones
- 30. ASP.Net MVC: Envío de JSON al controlador
Parece que mi aplicación sigue la misma lógica. Parece que no está registrando el controlador. –