2010-06-03 43 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