Articles of dependencia inyección

Inyección de dependencia: nueva instancia requerida en varios métodos de clases

Tengo un código que se ve así: public MyService(IDependency dependency) { _dependency = dependency; } public Message Method1() { _dependency.DoSomething(); } public Message Method2() { _dependency.DoSomething(); } public Message Method2() { _dependency.DoSomething(); } Ahora me acabo de dar cuenta de eso porque el objeto de dependencia contiene información de estado interno. Necesito actualizar una nueva […]

Inyección de Dependencia vs Ubicación del Servicio

Actualmente estoy sopesando las ventajas y desventajas entre DI y SL. Sin embargo, me he encontrado en el siguiente catch 22 que implica que debería usar SL para todo, y solo inyectar un contenedor IoC en cada clase. DI Catch 22: Algunas dependencias, como Log4Net, simplemente no se ajustan a DI. Llamo a estas metadependencias […]

Cómo eliminar la funcionalidad de la unidad de trabajo de los repositorys usando IOC

Tengo una aplicación que usa ASP.NET MVC, Unity y Linq to SQL. El contenedor de unidad registra el tipo AcmeDataContext que hereda de System.Data.Linq.DataContext , con un LifetimeManager utiliza HttpContext . Hay una fábrica de controladores que obtiene las instancias del controlador utilizando el contenedor de unidades. Configuré todas mis dependencias en los constructores, así: […]

¿Inyección de dependencia usando Azure WebJobs SDK?

El problema es que Azure WebJobs SDK solo admite métodos públicos estáticos como puntos de entrada de trabajos, lo que significa que no hay forma de implementar la inyección de constructores / propiedades. No puedo encontrar nada sobre este tema en la documentación / recursos oficiales de WebJobs SDK. La única solución que encontré se […]

¿Por qué se usa PerThreadLifetimeManager en este ejemplo?

Estoy siguiendo el ejemplo vinculado a continuación para configurar la unidad para que funcione con mi capa de servicio. Mi proyecto está configurado muy similar al de este artículo y entiendo todo, excepto por qué exactamente se usa PerThreadLifetimeManager al registrar la dependencia del servicio. Tenga en cuenta que también estoy usando un repository genérico […]

La mejor forma de usar StructureMap para implementar el patrón de Estrategia

Mi aplicación web tiene algunas ligeras variaciones en lógica de negocios y lógica de presentación dependiendo del tipo de usuario que está conectado. Parece que obtener variaciones inyectando diferentes clases concretas basadas en el tipo de usuario es una buena opción para DI. Así que me pregunto qué características de StructureMap debería usar para lograr […]

Inyección de dependencia en el patrón de unidad de trabajo utilizando repositorys

Quiero crear una unidad de clase de trabajo que envuelva los repositorys de forma similar a esto . El problema que tengo es tratar de implementar la dependency injection reemplazando los repositorys generics en el ejemplo con una interfaz IRepository. A continuación, en el artículo vinculado utilizan getters para comprobar si el repository está instanciado […]

¿Cómo explicar la dependency injection a un niño de 5 años?

¿Cuál es una buena manera de explicar la dependency injection ? Encontré varios tutoriales en Google, pero ninguno de ellos supondría que el lector es solo un principiante de Java. ¿Cómo le explicaría esto a un novato?

Inversión de control frente a dependency injection

Según el documento escrito por Martin Fowler , la inversión de control es el principio donde se invierte el flujo de control de un progtwig: en lugar de que el progtwigdor controle el flujo de un progtwig, las fonts externas (marco, servicios, otros componentes) toman el control de eso. Es como si conectamos algo a […]

Inyector simple que no puede inyectar dependencias en los controladores de API web

Estoy intentando hacer un constructor básico DI con Simple Injector, y parece que no puede resolver las dependencias para los controladores de API web. Tengo un controlador API en una carpeta “API”, que está fuera de la carpeta “Controladores”. También intenté colocarlo dentro de la carpeta “Controladores”, pero eso no pareció marcar una gran diferencia. […]