Pregunta

Me gustaría inyectar una dependencia en un modelo ASP.NET MVC, pero no puedo entender en qué parte de la tubería realizar la inyección.

Es muy sencillo con una ControllerFactory, pero no tanto cuando se trata de modelos.

¿Fue útil?

Solución 3

Terminé creando un localizador de servicios: http://martinfowler.com/articles/injection .html # UsingAServiceLocator

Me resulta más fácil que tratar con un contenedor de IoC e intentar insertar mi código DI en toda la tubería de MVC.

Otros consejos

Puede encontrar un tutorial razonable en el blog Shiju Vargheses: ASP.NET MVC Sugerencia: Inyección de dependencia con el bloque de aplicación de Unity

generalmente inyecto dependencias en el controlador como este

PersonController(IPersonRepository r)
{
\\ constrtuctor code
}

en los modelos, probablemente cuando necesite alguna instancia de algo que herede una interfaz, haga algo como esto:

var r = container.Resolve<IPersonRepository>();

Recomiendo revisar S # arp Architecture http://www.sharparchitecture.net/

Complemento de marco de código abierto para asp.net mvc.

¿Está completamente seguro de que necesita inyectar una dependencia en su propio modelo de dominio? Una entidad u objeto comercial típicamente encapsulará el estado y expondrá métodos para modificar ese estado de acuerdo con las reglas comerciales. El código que no entra en esta categoría generalmente se encontrará en un servicio. ¿Ha leído el concepto de un servicio de dominio en absoluto? Quizás usar uno se adapte mejor a sus necesidades y no necesitará inyectar ninguna dependencia en su dominio.

Pago esta muestra que he creado en base a las explicaciones de Ayende en su blog. Básicamente, uso Castle como mi contenedor de IoC y uso Mvc Contrib para agregar todos los controladores al contenedor y hacer que Mvc los obtenga de él. Entonces puedo inyectar cualquier cosa en los contenedores, como NHibernate ISession.

Si desea inyectar cosas dentro de sus clases de modelo (entidades), NH ahora admite Inyección de dependencia de objetos gestionados por Hibernate . Consulte esto , esto , y esto para ejemplos específicos de Spring y Windsor.

De lo que estás hablando es más en la línea del patrón Active Record.

Si AR es posible o no dependerá de qué ORM / DAO esté usando.

El patrón AR generalmente es más adecuado para proyectos pequeños.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top