注入 1.0 至 2.0 .只

本文关键字:注入 | 更新日期: 2023-09-27 17:55:21

嗨,我正在关注以下链接,http://codeclimber.net.nz/archive/2009/02/10/how-to-use-ninject-to-inject-dependencies-into-asp.net-mvc.aspx

我在网上收到错误:

kernel.Bind<IHttpController>().To<MyTESTController>()
    .Only(When.Context.Variable("controllerName")
    .EqualTo("CorporateRequirementsController"))
    .InjectPropertiesWhere(p => p.Name == "ActionInvoker");

我相信 Ninject 1.0 的语法.Only,2.0 中的等价物是什么?

我得到的错误是这样的:

'Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax<.../..../.Controllers.CorporateRequirementsController>"不包含"Only"的定义,也没有扩展方法"Only"接受类型为"Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax<.../..../"的第一个参数。可以找到 Controllers.CorporateRequirementsController>'(您是否缺少 using 指令或程序集引用?

注入 1.0 至 2.0 .只

是的,你是对的。根据旧的 svn 来源,它在 1.0 - http://ninject.googlecode.com/svn/trunk/src/Core/Binding/Syntax/IBindingConditionSyntax.cs 中,但在当前版本中它不存在。

在他们的实际文档中,有几个关于如何执行条件绑定的示例:属性''命名绑定''when方法。

我想最接近Only的是

IBindingInNamedWithOrOnSyntax<T> When(Func<IRequest, bool> condition);

在这里声明.因此,您可以传递将在对象解析期间调用的自定义函数,以及您将在其中检查控制器类型。对于不同的情况,还有几个 When 方法的重载,因此您可能也想检查它们。