我正在编写一个源自ReactiveValidatedObject
的视图模型。这允许我使用数据注释来触发对视图的验证,但是我遇到了一个问题:验证规则是以似乎是随机顺序的方式进行评估。
例如,如果属性是这样声明的(模型的字段是小数,方法验证器只是decimal.TryParse
并检查值是否为> = 0):
private string abc;
[ValidatesViaMethod(ErrorMessage = "Invalid", AllowNull = true]
[Required(ErrorMessage = "Required")]
public string Abc { /* ... */ }
我有单元测试,确保行为如下:
偶尔,我会在另一个文件中更改某些内容,运行所有测试,然后这个会失败。交换属性声明中属性的顺序可以修复测试。
有没有办法指定应用这些属性的顺序?
答案 0 :(得分:1)
我不相信有任何方法可以指定订单,它是Reflection返回订单的顺序。您可能必须装配IsAbcValid以检测null并(错误地)将其标记为有效。