Tengo una aplicación web ASP.NET MVC que implementa un proveedor de membresía personalizado. El proveedor de membresía personalizado toma un UserRepository
a su constructor que proporciona una interfaz entre el proveedor de membresía y NHibernate. El contenedor Ninject IoC proporciona UserRepository
.Inyección de dependencia con un proveedor de membresía personalizado
Obviamente, sin embargo, esto no funciona cuando el proveedor es instanciado por .NET: el constructor sin parámetros no tiene un UserRepository y no puede crear uno (el UserRepository requiere que una sesión de NHibernate pase a su constructor), que luego significa que el proveedor no puede acceder a su almacén de datos. ¿Cómo puedo resolver mi dependencia de objeto?
Es probable que valga la pena señalar que se trata de una aplicación existente que se ha readaptado con Ninject. Anteriormente, utilicé constructores sin parámetros que podían crear sus dependencias requeridas junto con los constructores parametrizados para ayudar en las pruebas unitarias.
¿Alguna idea o me he arrinconado aquí?
Ninject ha tenido un adaptador CSL oficial enero de 2010. –
Todavía falta en la página de inicio de CSL (está incluida en la versión de NInject en su lugar) – SztupY
"constructor, que inicializa los repositorios necesarios usando Ninject" - cuidado, si sus repositorios (o sus dependencias) están en el alcance Solicitud o Transitorio y cualquier El tipo de contexto de datos desechables entra en juego, usted terminará accediendo a un contexto de datos eliminados en todas las solicitudes excepto en la primera (porque no controla la duración de un Proveedor y ASP.NET la reutilizará en todas las solicitudes). Terminé obteniendo una instancia de repositorio del localizador cada vez que necesitaba llamar a uno cuando encontré este problema. –