2010-03-25 75 views

回答

1

使用自定義驗證程序。

[HasSelfValidation] 
public class ValidateMe { 


    [SelfValidation] 
    public void ValidateFieldNotNul(ValidationResults validationResults) 
    { 
     .. start psudo code 
     if(xor) 
      validationResults.AddResult(new ValidationResult("One must not be null",...)); 
    } 

} 
0

驗證應用程序塊有一個PropertyComparisonValidator它可以讓你比較一個屬性與另一個屬性。不幸的是,這個驗證器只允許ComparisonTypeEqual, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual,所以這實際上並沒有幫助你。

我覺得你有2種選擇:

  • 自我驗證
  • 自定義驗證

自我驗證(通過@Nix所示)可能是最簡單的,但需要這種重新實現了每一個你有這個需求的場景(至少要把鉤子稱爲一種常用的方法)。

創建一個custom validator將導致代碼可以添加到配置或直接歸因於實體,並且可以輕鬆地重用。

自定義驗證器肯定會做更多的工作,但如果您需要重用(例如可以在應用程序中重用)或更喜歡該設計,則可能值得。

相關問題