Articles of dependency injection

Inyector simple: inyectar una propiedad en una clase base

Durante varias semanas he estado usando el contenedor de dependency injection Simple Injector , con gran éxito. Me encanta lo fácil por lo que puedo configurarlo. Pero ahora tengo un diseño que no sé cómo configurar. Tengo una clase base de la que derivan muchos tipos, y quiero inyectar una dependencia en una propiedad de […]

¿Cómo usar DI cuando se generan nuevos formularios Windows Forms?

Tengo el contenedor Unity DI trabajando inicialmente con mi aplicación Windows Forms. En Program.cs tengo lo siguiente: static void Main() { var container = BuildUnityContainer(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(container.Resolve()); } private static IUnityContainer BuildUnityContainer() { var container = new UnityContainer(); container.RegisterType(); container.RegisterType(); return container; } En mi constructor de MainForm tengo lo siguiente que funciona : […]

Un marco para la dependency injection (en la aplicación MVC) y para la tarea AOP simple (usando atributos)

Llegué al punto en el que quiero realizar 2 tareas en mi aplicación ASP.NET que ambas pueden realizarse utilizando un marco de AOP, pero ambas son de naturaleza diferente: Inyección de dependencia para mis controladores y servicios. He creado el atributo personalizado NotNullAttribute y NotNullAttribute los parámetros o propiedades de algún método con él en […]

Registrar un tipo con constructor de argumentos primitivos?

Tengo una clase que tiene en su constructor algunos argumentos de tipo primitivo, como cadenas, etc. ¿Cómo debo registrar el tipo con el contenedor de la unidad? public LoginManager( IRegionManager regionManager, IEventAggregator eventAggregator, string mainRegionName, Uri login, Uri target) { this.regionManager = regionManager; this.eventAggregator = eventAggregator; this.mainRegionName = mainRegionName; this.login = login; this.target = target; […]

Inyección de dependencias vs dependencias de assembly.

Digamos, que tengo la siguiente estructura de proyecto: Application BusinessLogic DataAccessLayer He preparado todos los tipos para usar la dependency injection del hombre pobre y ahora quiero presentar el verdadero uso de Unity. Pero estoy luchando por dónde colocar el contenedor de dependencias y su configuración (supongo que lo configuraré desde el código). DataAccessLayer necesita […]

Decorar la API web de ASP.NET IHttpController

Estoy tratando de envolver los controladores de la API web (implementaciones de IHttpController ) con decoradores, pero cuando hago esto, la API web lanza una excepción, porque de alguna manera está esperando la implementación real. Aplicar decoradores a los controladores es un truco que aplico con éxito a los controladores MVC y obviamente me gusta […]

¿Usando la fábrica abstracta como factor de inyección en la Unidad?

Tengo una fábrica abstracta registrada para inyección en algunas instancias de controlador. ¿Puedo registrar esa fábrica abstracta y usarla como una fábrica de inyección? Esto es lo que tengo: public interface ILevelFactory { Levels Create(); } .RegisterType() .RegisterType(new InjectionFactory((c) => StaticLevelFactory.GetLevels())) Situación deseada: .RegisterType() .RegisterType(*** look up and use ILevelFactory ***) En resumen, quiero deshacerme […]

¿Cómo trabajo con Ninject en una aplicación web ASP.NET MVC?

He creado una nueva aplicación web de MVC y tengo referencias a Ninject.dll, Ninject.Web.Common.dll y Ninject.Web.MVC.dll. Global.asax.cs: public class MvcApplication : NinjectHttpApplication { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( “Default”, // Route name “{controller}/{action}/{id}”, // URL with parameters new { controller = “Home”, action […]

Pruebas unitarias e dependency injections con dependencias profundamente anidadas.

Supongamos una estructura heredada de clase y método como la que se muestra a continuación public class Foo { public void Frob(int a, int b) { if (a == 1) { if (b == 1) { // does something } else { if (b == 2) { Bar bar = new Bar(); bar.Blah(a, b); } […]

Inyección de dependencia – Cuándo usar la inyección de propiedades

Tengo una clase que tiene un constructor como este: private string _someString; private ObjectA _objectA; private ObjectB _objectB; private Dictionary _dictionaryA; private Dictionary<Tuple, long?> _dictionaryB; public SomeDiClass(string someString) { _someString = someString; _objectA = new ObjectA(); _objectB = new ObjectB(); _dictionaryA = new Dictionary(); _dictionaryB = new Dictionary<Tuple, long?>(); } Quiero sacar la creación de […]