数据注释的确定性评估顺序?

时间:2011-11-17 20:11:29

标签: mvvm system.reactive reactiveui

我正在编写一个源自ReactiveValidatedObject的视图模型。这允许我使用数据注释来触发对视图的验证,但是我遇到了一个问题:验证规则是以似乎是随机顺序的方式进行评估。

例如,如果属性是这样声明的(模型的字段是小数,方法验证器只是decimal.TryParse并检查值是否为> = 0):

  private string abc;
  [ValidatesViaMethod(ErrorMessage = "Invalid", AllowNull = true]
  [Required(ErrorMessage = "Required")]
  public string Abc { /* ... */ }

我有单元测试,确保行为如下:

  • 如果该字段为空,则错误应为“必需”。
  • 如果字段包含无法解析的内容,则错误应为“无效”。

偶尔,我会在另一个文件中更改某些内容,运行所有测试,然后这个会失败。交换属性声明中属性的顺序可以修复测试。

有没有办法指定应用这些属性的顺序?

1 个答案:

答案 0 :(得分:1)

我不相信有任何方法可以指定订单,它是Reflection返回订单的顺序。您可能必须装配IsAbcValid以检测null并(错误地)将其标记为有效。