我有一个带有构造函数的类,该构造函数的参数具有默认值。使用 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{Employee}
建议:
1) 确保提供者正确处理创建请求。
当存在参数的默认值时,该[Optional]
属性是否仍然有效?使用诸如此类的可选参数处理注入的最佳方法是什么?