FluentLinqToSql.ActiveRecord.DataAnnotationsValidator.Validate C# (CSharp) Method

Validate() public method

public Validate ( object toValidate ) : System.ComponentModel.DataAnnotations.ValidationResult
toValidate object
return 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));
        }

Usage Example

 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");
 }
All Usage Examples Of FluentLinqToSql.ActiveRecord.DataAnnotationsValidator::Validate