using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public static void Main()
var instance = new MyModel
Console.WriteLine("Validating good instance");
Console.WriteLine(instance.ValidateObject().ToDescErrorsString());
var badInstance = new MyModel
Console.WriteLine("Validating bad instance");
Console.WriteLine(badInstance.ValidateObject().ToDescErrorsString());
public int NumberBetween1and10 { get; set; }
public static class ValidationExtensions
public static IEnumerable<ValidationResult> ValidateObject(this object source)
ValidationContext valContext = new ValidationContext(source, null, null);
var result = new List<ValidationResult>();
Validator.TryValidateObject(source, valContext, result, true);
public static string ToDescErrorsString(this IEnumerable<ValidationResult> source, string messageEmptyCollection = null)
StringBuilder result = new StringBuilder();
result.AppendLine("We found the next validations errors:");
result.AppendFormat(" {0} --> {1}{2}", s.MemberNames.FirstOrDefault(), s.ErrorMessage,
result.AppendLine(messageEmptyCollection ?? string.Empty);
return result.ToString();