StructureMap kullanarak MVC projem için setter/property injection ayarlamaya çalışıyorum, ancak özellikleri ayarlamak için bunu elde edemiyorum. Constructor enjeksiyonunun önerilen uygulama olduğunun farkındayım, ancak setter enjeksiyonunu kullanarak bunu yapmamızı gerektiren sıkı bir şartım var, bu yüzden lütfen bana başka türlü söylemeye çalışan yorumları saklayınız. StructureMap Setter Enjeksiyon ayarlanmadı özellik
Böyle benim Global.asax aşağıdaki gibi normal Demirbaş kurulum koduna sahip Benim TestControllerFactory benziyorControllerBuilder.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>();
});
});
aşağıdadır:
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 ;
}
}
aşağıdaki Servisi/Uygulama sınıfı çift var
public interface IPaymentService
{
}
public class PaymentService:IPaymentService
{
}
Ve son olarak, wil benim denetleyiciniz {; Seti;}
public ActionResult Index(){
var test = Service... //Service is Null
}
kamu IPaymentService Servisi {get}
Kontrolör :
public class HomeController: l içine enjekte beton ödeme hizmeti uygulaması olması gerekir özelliği vardır Yukarıda gösterilen, hata ayıkladığımda özellik boş kalır. Ayrıca, [SetterProperty] ürününü yalnızca çalışıp çalışmadığını (denetleyicilerimi bu özniteliklerle eşleştirmek gibi bir niyetim olmadığını) kullanmayı denedim ve hala çalışmadı.
Başka bir şey yapmam gerekmediğinden veya sorunun ne olabileceğinden emin değilim. Ben oldukça uzun bir süre StructureMap ile constructor enjeksiyon kullanıyorum. Bu çizgi bırakarak
Eğer Setter Enjeksiyonu ile herhangi bir şans var mı? Eylem Filtreleri üzerinde çalışıyorum ama aynı zamanda işe yaramıyor. – ntombela
Setter enjeksiyonu ile çalıştıktan sonra, ondan uzaklaşmaya karar verdim. – Joel