我有一個架構,其中所有的默認依賴關係都通過Initialize
和OnActionExecuting
自動注入。這一切都像一個魅力,因爲在運行時(而不是測試),默認控制器激活器將調用這些方法傳遞正確的具體對象。精細。在ASP.NET MVC控制器中注入我自己的自定義依賴關係的正確方法是什麼?
我的問題開始於我在Initialize
和OnActionExecuting
方法中有一個自定義依賴項不可注入時。
例:
public class MyController
{
private IEmailSender emailSender = null;
}
嗯..在運行時emailSender
將是無效的,除非我把它設置爲別的東西。在這種情況下,我想最終的東西沒有那麼大,像這樣:
public class MyController
{
private IEmailSender emailSender = null;
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
if(this.emailSender == null)
this.emailSender = new SomeConcreteEmailSender();
}
}
難看。我不想這樣做「如果空,實例化」的東西。
更sofisticated方式注入IEmailSender
會創造我自己的ControllerActivator
,只會在運行時調用(未測試),並且將沒有必要做這個「如果」自動注入IEmailSender
。但我不想爲每個需要注入的控制器創建自定義ControllerActivator
。
這就是說,當涉及到ASP.NET控制器的自定義依賴注入時,什麼被視爲標準?
「什麼是標準的,當談到自定義」 - 也許你可以看看使用標準的依賴注入框架? – Slugart