2011-11-17 74 views
1

我正在寫一個來自ReactiveValidatedObject的視圖模型。這使我可以使用數據註釋來觸發對視圖的驗證,但是我遇到了一個問題:驗證規則以似乎是隨機順序的方式進行評估。數據註釋的確定性評估順序?

例如,如果該屬性聲明如下(模型的字段是一個小數,並且該方法驗證只是做decimal.TryParse,並檢查該值是否> = 0):

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

我有單元測試,以確保行爲如下:

  • 如果該字段爲空,錯誤應爲「必需」。
  • 如果該字段有不解析的內容,則該錯誤應爲「無效」。

有時候,我會在另一個文件中改變一些東西,運行所有的測試,並且這個失敗。交換屬性聲明中屬性的順序可以修復測試。

有什麼方法可以指定這些屬性應用於哪個順序?

+0

哇,你發現了一個新的和有趣的方式來標記到標題中!恭喜!另外,在規範中我沒有知道任何屬性都有秩序。 – Will

回答

1

我不相信有任何方法可以指定順序,它是Reflection返回它們的順序。您可能必須操縱您的IsAbcValid才能檢測到null並(錯誤地)將其標記爲有效。

+0

太糟糕了。感謝您的提示,這將會解決問題。 –