Ninject 1.0 到 2.0。只有
Ninject 1.0 to 2.0 .Only
嗨,我正在关注下面 link,
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");
我相信 .Only
是 Ninject 1.0 的语法,2.0 中的等价物是什么?
我得到的错误是这样的:
'Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax<.../..../.Controllers.CorporateRequirementsController>' does not contain a definition for 'Only' and no extension method 'Only' accepting a first argument of type 'Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax<.../..../.Controllers.CorporateRequirementsController>' could be found (are you missing a using directive or an assembly reference?
是的,你是对的。基于旧的 svn 来源,它在 1.0 - http://ninject.googlecode.com/svn/trunk/src/Core/Binding/Syntax/IBindingConditionSyntax.cs 中,但在当前版本中它不存在。
在 their actual documentation 中有几个关于如何进行条件绑定的示例:attributes\named bindings\when 方法。
我想最接近 Only
的是
IBindingInNamedWithOrOnSyntax<T> When(Func<IRequest, bool> condition);
已宣布 here。因此,您可以传递将在对象解析期间调用的自定义函数,以及您将在其中检查控制器类型的地方。还有一些针对不同情况的 When 方法重载,因此您可能也想检查它们。
嗨,我正在关注下面 link, 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");
我相信 .Only
是 Ninject 1.0 的语法,2.0 中的等价物是什么?
我得到的错误是这样的:
'Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax<.../..../.Controllers.CorporateRequirementsController>' does not contain a definition for 'Only' and no extension method 'Only' accepting a first argument of type 'Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax<.../..../.Controllers.CorporateRequirementsController>' could be found (are you missing a using directive or an assembly reference?
是的,你是对的。基于旧的 svn 来源,它在 1.0 - http://ninject.googlecode.com/svn/trunk/src/Core/Binding/Syntax/IBindingConditionSyntax.cs 中,但在当前版本中它不存在。
在 their actual documentation 中有几个关于如何进行条件绑定的示例:attributes\named bindings\when 方法。
我想最接近 Only
的是
IBindingInNamedWithOrOnSyntax<T> When(Func<IRequest, bool> condition);
已宣布 here。因此,您可以传递将在对象解析期间调用的自定义函数,以及您将在其中检查控制器类型的地方。还有一些针对不同情况的 When 方法重载,因此您可能也想检查它们。