2011-05-05 155 views
0

我有一個控制器和一個自定義的ActionInvoker。我可以設置自定義ActionInvoker如下,不使用屬性的屬性注入[注入]與Ninject

public HomeController() 
{ 
    this.ActionInvoker = new MyActionInvoker(..); 
} 

但不想爲此在每個控制器(我不希望用一個基本控制器)。我想用Ninject來注入ActionInvoker。由於ActionInvoker是基本控制器的一部分,我無法添加[注入]它。我搜查了很多東西,並嘗試類似

Bind<HomeController>().ToSelf().WithPropertyValue("ActionInvoker", 
    x =>x.Kernel.GetService(typeof(IActionInvoker))); 

但它沒有奏效。我做錯了嗎?或者有什麼建議來實現我想要的。謝謝

更新:這有效,其他的錯誤。謝謝你的答案。

+0

你使用,你使用任何Ninject.Web.Mvc擴展的MVC哪個版本?您當前的實施可能會有一些副作用。 – 2011-05-05 14:16:34

回答

1

你試過:

Bind<IActionInvoker>() 
    .To<MyActionInvoker>() 
    .Using<SingletonBehavior>(); 


Bind<HomeController>() 
    .ToSelf() 
    .InjectPropertiesWhere(p => p.Name == "ActionInvoker"); 
+1

謝謝。但是你提到的方法在ninject2中沒有了。無論如何,我使用的方法是有效的。這是另一回事。它發生了。 :) – 2011-05-05 12:57:59