【问题标题】:Property injection without using attribute [Inject] with Ninject不使用属性 [Inject] 和 Ninject 进行属性注入
【发布时间】:2011-05-05 11:27:06
【问题描述】:

我有一个控制器和一个自定义的 ActionInvoker。我可以将自定义的 ActionInvoker 设置如下,

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

但不想在每个控制器中都这样做(我也不想使用基本控制器)。我想使用 Ninject 来注入 ActionInvoker。由于 ActionInvoker 是基本控制器的一部分,我无法将 [inject] 添加到它。我搜索了很多并尝试了类似

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

但它没有用。我做错了吗?或任何实现我想要的建议。谢谢

更新:这行得通,还有其他问题。谢谢你的回答。

【问题讨论】:

  • 您使用哪个 MVC 版本,您是否使用任何 Ninject.Web.Mvc 扩展?您当前的实现可能有一些副作用。

标签: asp.net-mvc dependency-injection ninject


【解决方案1】:

你试过了吗:

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


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

【讨论】:

  • 谢谢。但是你提到的方法在ninject2中消失了。无论如何,我使用的方法有效。这是另外一回事。它发生了。 :)
猜你喜欢
  • 1970-01-01
  • 2011-07-19
  • 2012-02-18
  • 1970-01-01
  • 2011-03-14
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多