我应该按照这个思路做些什么吗?我正在考虑从 BaseController
继承的所有 Controller 。这是否打破了 IoC 的设计模式?我还应该做什么?
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>();
}
}
}
最佳答案
使用构造函数注入(inject)并让 controllerfactory 为您注入(inject)它会简单得多。如果可以,如果可以避免构造函数注入(inject),请不要使用服务定位器(您的 ServiceResolver )。
Adding a controller factory to ASP MVC 上有一些信息
该链接显示了如何使用 StructureMap 执行此操作,看起来您正在使用 Unity,但应该很容易适应。
关于c# - IoC 和 ASP.NET MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/953834/