Si llama al new MyClass()
, entonces StructureMap no está involucrado en absoluto. Ninguna cantidad de configuración de StructureMap cambiará el comportamiento.
Si llama al ObjectFactory.GetInstance<MyClass>()
, StructureMap llamará por defecto al constructor con más parámetros.
Si desea StructureMap utilizar un constructor diferente, puede especificar el constructor (a través de la respuesta de PHeiberg):
x.SelectConstructor<IMyClass>(() => new MyClass(null));
O puede simplemente decirle StructureMap explícitamente cómo crear la instancia utilizando la sobrecarga de Use()
que acepta un Func<>
:
x.For<IMyClass>().Use(ctx => new MyClass(ctx.GetInstance<IMyService>()))
¿Qué sucede si quiero utilizar un constructor MyClass que tenga 2 parámetros? 'ctx.GetInstance <>' solo permite 1 tipo de parámetro. –