protected override ValidationResult IsValid(object value, ValidationContext validationContext) { try { // Prevent infinite recursion by keeping track of what we've hit so far if (validationContext.Items.ContainsKey(value)) { return ValidationResult.Success; } validationContext.Items.Add(value, true); var outResults = new Collection<ValidationResult>(); // Try validation again, but keep our Items list Validator.TryValidateObject(value, new ValidationContext(value, validationContext.Items), outResults, validateAllProperties: true); if(outResults.Count > 0) { var validationResult = new ValidationCumulativeResults( string.Format("The field {0} in {1} is not valid.", validationContext.MemberName, validationContext.ObjectType.Name), outResults); return validationResult; } return ValidationResult.Success; } catch (ValidationException exception) { throw new ValidationException(string.Format("Invalid usage of ValidateObjectDeep on member '{0}' of '{1}'", validationContext.MemberName, validationContext.ObjectType.FullName), exception); } }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) { try { // Prevent infinite recursion by keeping track of what we've hit so far if (validationContext.Items.ContainsKey(value)) { return(ValidationResult.Success); } validationContext.Items.Add(value, true); var outResults = new Collection <ValidationResult>(); // Try validation again, but keep our Items list Validator.TryValidateObject(value, new ValidationContext(value, validationContext.Items), outResults, validateAllProperties: true); if (outResults.Count > 0) { var validationResult = new ValidationCumulativeResults( string.Format("The field {0} in {1} is not valid.", validationContext.MemberName, validationContext.ObjectType.Name), outResults); return(validationResult); } return(ValidationResult.Success); } catch (ValidationException exception) { throw new ValidationException(string.Format("Invalid usage of ValidateObjectDeep on member '{0}' of '{1}'", validationContext.MemberName, validationContext.ObjectType.FullName), exception); } }