public virtual bool IsValid(object value, ValidationContext validationContext)
 {
     var result = GetValidationResult(value, validationContext);
     return result == null || !result.Any();
 }
 public abstract IEnumerable<ValidationResult> GetValidationResult(object value, ValidationContext validationContext);