[英]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.