Bu hat boyunca bir şey yapmalı mıyım? Tüm denetleyicileri BaseController
'dan miras almayı düşünüyorum. Bu, IoC'nin tasarım modelini kırdı mı? Bunun yerine başka ne yapmalıyım?IoC ve ASP.NET MVC Denetleyicileri
public class BaseController: Controller
{
protected ICookieService CookieService {
get {
return ServiceResolver.Resolve<ICookieService>(new { HttpContext = HttpContext });
}
}
protected IDateTimeService DateTimeService {
get {
return ServiceResolver.Resolve<IDateTimeService>();
}
}
protected ISettingsService SettingsService {
get {
return ServiceResolver.Resolve<ISettingsService>();
}
}
}
Katılıyorum. Tür çözümleyicinizi yalnızca uygulamanızın kökünde kullanmalısınız. Enjektörleri değiştirmeniz gerekmediğinden başka bir nedenden ötürü, tüm kodunuzu değiştirmek zorunda kalmazsınız, sadece ilk nesneyi hangi noktada tutmanız gerekir. Benim uygulamada enjektör hakkında bilen tek yer Global.asax, ve ben bile orada çok fazla yerde kullanıyorum (bu, ben 2 yerde kullanıyorum). Kurucu enjeksiyon ile her şey sadece yerine düşer ve nesneniz her şeyden yalıtılmıştır – Talljoe
Aslında Castle Windsor'u kullanıyorum ama karmaşıklığını/bağımlılığını gizlemek için sarmalayıcı arayüzleri seti ile birlikte –
Yardımlarınız için teşekkür ederiz! –