Estoy intentando configurar la inyección de setter/property para mi proyecto MVC usando StructureMap, pero parece que no puedo configurarlo para establecer las propiedades. Soy consciente de que la inyección de Constructor es la práctica recomendada, pero tengo un requisito estricto que exige que lo hagamos mediante la inyección de setter, por lo tanto, espere que los comentarios intenten decirme lo contrario.StructureMap Setter Injection no establece la propiedad
Tengo el código normal de instalación repetitivo como el siguiente en mi Global.asax
ControllerBuilder.Current.SetControllerFactory(new TestControllerFactory());
ObjectFactory.Initialize(x => {
x.For<IPaymentService>().Use<PaymentService>();
x.ForConcreteType<HomeController>().Configure.Setter<IPaymentService>(y => y.PaymentService).IsTheDefault();
x.SetAllProperties(y =>
{
y.OfType<IPaymentService>();
});
});
Mi TestControllerFactory tiene el siguiente aspecto:
public class TestControllerFactory:System.Web.Mvc.DefaultControllerFactory
{
protected IController GetControllerInstance(Type controllerType)
{
if (controllerType == null)
throw new ArgumentNullException("controllerType");
return ObjectFactory.GetInstance(controllerType) as IController ;
}
}
Tengo el siguiente/Implementación par de clases de servicio
public interface IPaymentService
{
}
public class PaymentService:IPaymentService
{
}
Y finalmente, tengo mi controlador que wil l tiene la propiedad de que tiene que tener la implementación del servicio de pago de hormigón inyectado en ella:
HomeController pública de clase: Controlador { Servicio IPaymentService pública {get; set;}
public ActionResult Index(){
var test = Service... //Service is Null
}
}
Mostrado arriba, la propiedad permanece nula cuando depuro.
Además, he intentado usar [SetterProperty] solo para ver si funcionó (no tengo intención de conectar mis controladores con esos atributos), y todavía no funcionó.
No estoy seguro si tengo que hacer algo más o cuál podría ser el problema. He estado usando la inyección de constructor con StructureMap por bastante tiempo.
¿Tuvo suerte con inyección Setter? Intento utilizar Action Filters, pero parece que tampoco funciona. – ntombela
Después de luchar para trabajar con la inyección setter, decidí alejarme de ella. – Joel