StructureMap을 사용하여 MVC 프로젝트의 setter/property 주입을 설정하려고하지만 속성을 설정하지 못했습니다. 나는 Constructor injection이 권장되는 방법이라는 것을 잘 알고 있지만 setter injection을 사용하는 것을 요구하는 엄격한 요구 사항을 가지고있다. StructureMap Setter 주입 설정하지 않음 속성
나는 그런 내에서 Global.asax에 다음과 같은 일반 보일러 설치 코드가 내 TestControllerFactory의 모습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>();
});
});
다음
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 ;
}
}
나는 다음과 같은 서비스/구현 클래스 쌍을
public interface IPaymentService
{
}
public class PaymentService:IPaymentService
{
}
마지막으로, {; 세트;}
public ActionResult Index(){
var test = Service... //Service is Null
}
공공 IPaymentService 서비스 {얻을}
컨트롤러 :
공용 클래스 HomeController : 난 그것으로 주입 된 콘크리트 결제 서비스 구현을 위해 필요한 속성이 위에 표시된, 디버깅 할 때 속성이 null로 유지됩니다.
또한 [SetterProperty]를 사용해 보았습니다. (컨트롤러를이 속성으로 연결하려는 의도가 없습니다.) 여전히 작동하지 않았습니다.
다른 조치가 필요한지 또는 문제가 무엇인지 알 수 없습니다. 나는 꽤 잠시 동안 StructureMap과 함께 생성자 주입을 사용 해왔다. 이 라인을 삭제
당신이 세터 주입과 운이 있었나요를? 액션 필터를 시험 중입니다 만 작동하지 않는 것 같습니다. – ntombela
세터 주입 작업에 어려움을 겪은 후 필자는 그 곳에서 벗어나기로 결정했다. – Joel