我应该做些什么?我正在考虑从BaseController
继承我的所有控制器。这是否打破了IoC的设计模式?我还应该做些什么呢?IoC和ASP.NET MVC控制器
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>();
}
}
}
我同意。您应该只在应用程序的根目录中使用您的类型解析器。如果没有其他原因,而不是如果您需要更改注射器,则无需更改所有代码,只需更改第一个对象即可。在我的应用程序中,唯一知道注入器的地方是Global.asax,甚至在那里我使用了太多的地方(即,我在2个地方使用它)。使用构造函数注入,所有东西都落在原地而你的物体是绝对的一切 – Talljoe 2009-06-05 02:34:07