【发布时间】:2012-05-09 14:16:28
【问题描述】:
我有一个类,它的构造函数有一个带默认值的参数。在 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] 属性是否仍然有效?使用诸如此类的可选参数处理注入的最佳方法是什么?
【问题讨论】: