使用默认参数值与Ninject 3.0(Using default parameter values

2019-06-24 07:22发布

我有一类具有默认值的参数的构造函数。 随着Ninject 2.2,它会兑现[Optional]属性及反对声明,像这样一个构造函数没有绑定定义的正常工作:

public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null)

由于升级到Ninject 3.0,此对象的构造失败,一个消息,说明该提供商返回null:

测试方法ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTest抛出异常:

Ninject.ActivationException:错误使用条件隐式自粘合IValidator的{} PERSONNAME激活IValidator {} PERSONNAME

提供返回null。

激活路径:

2)依赖性IValidator {PERSONNAME}注射入型EmployeeValidator的构造的参数personNameValidator

1)请求IValidator {员工}

建议:

1)确保供应商正确处理创建请求。

[Optional]属性仍然荣幸当一个参数的默认值是存在的,什么是处理注射可选参数,如它的最好方法?

Answer 1:

可选属性是在这种情况下忽略,因为总是有默认值服务现有但提供的值是零。 空是不是默认的允许值。

您可以通过NinjectSettings.AllowNullInjection设置为true覆盖此行为。



文章来源: Using default parameter values with Ninject 3.0