[英]IoC and ASP.NET MVC Controllers
我应该按照这个方针做点什么吗? 我正在考虑从BaseController
继承的所有控制器。 这是否打破了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>();
}
}
}
使用构造函数注入并让controllerfactory为您注入它会更简单。 如果可以的话,如果可以使用构造函数注入,请不要使用服务定位器(ServiceResolver)。
将控制器工厂添加到ASP MVC有一些信息
该链接显示了如何使用StructureMap进行操作,看起来您正在使用Unity,但它应该很容易适应。
我假设您拥有的受保护接口是控制器的依赖项。 可以设置一个IoC容器来为您注入依赖项。 当然可以使用Castle Windsor。 您需要将BaseController类更改为具有所需依赖项的构造函数,只要IoC容器知道它将能够注入它们的其他服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.