c# – 使用Ninject 3.0的默认参数值

c# – 使用Ninject 3.0的默认参数值,第1张

概述我有一个类的构造函数具有一个默认值的参数.使用Ninject 2.2,它将遵守[可选]属性并且正常工作,没有对声明为如下的构造函数定义绑定: public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null) 由于升级到Ninject 3.0,此对象的构造失败,并显示一条消息,指出提供程序返回 我有一个类的构造函数具有一个默认值的参数.使用Ninject 2.2,它将遵守[可选]属性并且正常工作,没有对声明为如下的构造函数定义绑定:
public EmployeeValIDator([Optional] IValIDator<Personname> personnameValIDator = null)

由于升级到Ninject 3.0,此对象的构造失败,并显示一条消息,指出提供程序返回null:

Test method ValIDatorIsolated.Tests.EmployeeValIDatorTest.CreateEmployeeValIDatorTest threw exception:

Ninject.ActivationException: Error activating IValIDator{Personname} using conditional implicit self-binding of IValIDator{Personname}

ProvIDer returned null.

Activation path:

2) Injection of dependency IValIDator{Personname} into parameter personnameValIDator of constructor of type EmployeeValIDator

1) Request for IValIDator{Employee}

Suggestions:

1) Ensure that the provIDer handles creation requests properly.

当参数的默认值存在时,[可选]属性是否仍然保持有效,并且使用可选参数(如此)处理注入的最佳方法是什么?

解决方法 在这种情况下,可选属性被忽略,因为始终有默认值可用 – 但提供的值为null.默认情况下,Null不是允许的值.

您可以通过将NinjectSettings.AllowNullinjection设置为true来覆盖此行为.

总结

以上是内存溢出为你收集整理的c# – 使用Ninject 3.0的默认参数值全部内容,希望文章能够帮你解决c# – 使用Ninject 3.0的默认参数值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1261280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存