2011-05-05 131 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