Quantcast
Channel: Fluent Validation for .NET
Viewing all articles
Browse latest Browse all 1917

New Post: Validate a List of objects

$
0
0
I think you're right. Looks like this works:
public static ValidationResult ValidateCollection<T>(this IValidator<T> validator, IEnumerable<T> instances)
{
    ValidationResult result = new ValidationResult();
    if (instances != null)
    {
        using (IEnumerator<T> enumerator = instances.GetEnumerator())
        {
            int index = 0;
            while (enumerator.MoveNext())
            {
                ValidationResult temp = validator.Validate(enumerator.Current);
                if (!temp.IsValid)
                {
                    foreach (ValidationFailure failure in temp.Errors)
                    {
                        string item = string.Format("IEnumerable[{0}]", index);
                        result.Errors.Add(
                            new ValidationFailure(
                                string.Format("{0}.{1}", item, failure.PropertyName),
                                string.Format("{0}: {1}", item, failure.ErrorMessage),
                                failure.AttemptedValue)
                                {
                                    CustomState = failure.CustomState
                                });
                    }
                }
                index++;
            }
        }
    }
    return result;
}

public static void ValidateCollectionAndThrow<T>(this IValidator<T> validator, IEnumerable<T> instances)
{
    ValidationResult result = validator.ValidateCollection(instances);
    if (!result.IsValid)
    {
        throw new ValidationException(result.Errors);
    }
}
Thanks for your help!

Viewing all articles
Browse latest Browse all 1917

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>