2010-06-03 71 views
3

這是該方法的定義:幫助我瞭解的方法Validator.TryValidateObject()

public static bool TryValidateObject(
Object instance, 
ValidationContext validationContext, 
ICollection<ValidationResult> validationResults, 
bool validateAllProperties 

我感到困惑的是validateAllProperties參數,當它是真實的,驗證所有的屬性我明白。

什麼時候它是假的,不驗證所有的屬性,但哪些屬性將被驗證?

回答

5

當屬性爲false時,驗證程序應驗證對其應用了ValidationAttribute的每個屬性。這可以包括以下任何屬性:CustomValidationAttribute,DataTypeAttribute,RangeAttribute,RegularExpressionAttribute,RequiredAttribute和StringLengthAttribute,以及從ValidationAttribute派生的任何其他屬性。

查看MSDN library on the TryValidateObject method瞭解更多信息。

在下面的例子中,Foo應該被驗證,而Bar不應該。

public class Example 
{ 
    [Required(ErrorMessage = "Foo is a required property.")] 
    public object Foo { get; set; } 

    public object Bar { get; set; } 
} 
0

我也沒有完全理解它,但在與單元測試糾纏在我寫的自定義驗證器後,我注意到一個Interresting的東西。

當我啓動沒有這個參數的測試時(所以默認情況下它是假的),我的自定義驗證器被省略了!如果我將它設置爲true,那麼在我的測試中將它們考慮在內,現在我可以愉快地繼續TDD。希望這可以幫助你一點。

+0

這也是我得到的,所以我問了關於參數的問題。 – Benny 2010-07-18 06:52:12