Próbuję ustawić setter/property injection dla mojego projektu MVC przy użyciu StructureMap, ale nie mogę go ustawić w celu ustawienia właściwości. Doskonale zdaję sobie sprawę, że wstrzykiwanie preparatu Constructor jest zalecaną praktyką, ale mam ścisły wymóg, który wymaga, abyśmy robili to za pomocą zastrzyku ustawiającego, dlatego prosimy o komentarze, które próbują mi powiedzieć inaczej.StructureMap Setter Injection not setting property
mam normalną szablonowe kod konfiguracji, takie jak następujące w moim 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>();
});
});
Moja TestControllerFactory wygląda następująco:
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 ;
}
}
Mam następujące klasy usługi pair/Wdrażanie
public interface IPaymentService
{
}
public class PaymentService:IPaymentService
{
}
I wreszcie, mam kontrolera, który będzie l mają tę właściwość, że musi mieć konkretną realizację usług płatniczych wstrzykuje do niego:
public class HomeController: Kontroler { publicznego IPaymentService Usługa {get; set;}
public ActionResult Index(){
var test = Service... //Service is Null
}
}
Powyżej, właściwość pozostaje pusta po debugowaniu.
Dodatkowo, próbowałem używać [SetterProperty] tylko po to, aby sprawdzić, czy zadziałało (nie mam zamiaru sprzęgać moich kontrolerów z tymi atrybutami) i nadal nie działało.
Nie jestem pewien, czy muszę zrobić coś innego, czy może być problem. Od jakiegoś czasu korzystam z wtrysku konstruktora z StructureMap.
miałeś szczęścia Seter z wtryskiem? Próbuję użyć Action Filters, ale to też nie działa. – ntombela
Po walce z zastrzykiem ustawiającym postanowiłem odejść od tego. – Joel