我的問題如下: 我有一個名爲ApplicationController的基礎控制器(ASP.Net MVC控制器),我希望我的所有控制器都從它繼承。這個基礎控制器有一個ILogger屬性,標有[Dependency]屬性。 (是的,我知道我應該使用構造函數注入,我只是好奇這個屬性)。統一[依賴]注入和繼承
我創建了容器,註冊類型,更改了默認工廠,一切都很好。問題是當我嘗試在派生控制器中使用我的Logger屬性時,它沒有解決。
我做錯了什麼?爲什麼容器在創建派生控制器時不解析基類相關性?
代碼樣品:
的ApplicationController:
public class ApplicationController : Controller
{
[Dependency]
protected ILogger _logger { get; set; }
}
衍生控制器:
public class HomeController : ApplicationController
{
public HomeController()
{
}
public ActionResult Index()
{
_logger.Log("Home controller constructor started.");
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
統一控制器工廠:
public class UnityControllerFactory : DefaultControllerFactory
{
private readonly IUnityContainer _container;
public UnityControllerFactory(IUnityContainer container)
{
_container = container;
}
protected override IController GetControllerInstance(Type controllerType)
{
return _container.Resolve(controllerType) as IController;
}
}
周
的Global.asax.cs樣本:
我是很新的團結,所以也許我做錯了什麼。
謝謝, Ami。
這是否適用於應用程序控制器? – 2009-06-17 14:30:20
你有沒有得到這個工作?我的代碼幾乎是相同的,我無法讓基礎控制器來解決。任何人? – 2009-09-03 21:05:17
Ray - 在將這些屬性公開之後,它就工作了。這是你爲了讓Unity工作而必須付出的代價。 – Ami 2009-09-04 07:26:01