public Validate ( object toValidate ) : System.ComponentModel.DataAnnotations.ValidationResult | ||
toValidate | object | |
Результат | System.ComponentModel.DataAnnotations.ValidationResult |
public ValidationResult Validate(object toValidate)
{
var properties = GetProperties();
var propsWithValidators = from property in properties
let validators = GetValidators(property)
where validators.Length > 0
let value = GetPropertyValue(property, toValidate)
select new { name = property.Name, validators, value };
var propertyErrors = from propWithValidator in propsWithValidators
from validator in propWithValidator.validators
where !validator.IsValid(propWithValidator.value)
let error = validator.FormatErrorMessage(propWithValidator.name)
select new ValidationError(error, propWithValidator.name, propWithValidator.value);
var objectErrors = from validator in GetValidators()
where !validator.IsValid(toValidate)
let error = validator.FormatErrorMessage(string.Empty)
select new ValidationError(error, string.Empty, toValidate);
return new ValidationResult(propertyErrors.Concat(objectErrors));
}
public void ValidatesAtObjectLevel() { var validator = new DataAnnotationsValidator(typeof(Foo2)); var result = validator.Validate(new Foo2 { Id = 1, Name = "bar" }); result.IsValid.ShouldBeFalse(); result.Single().ErrorMessage.ShouldEqual("Id: 1 Name: bar"); }