/// <summary> /// Check that the options are valid. Should throw an InvalidOperationException if things are not ok. /// </summary> /// <exception cref="InvalidOperationException"></exception> public static void Validate(this IValidatableOptions options) { var validationErrors = options.GetValidationErrors().ToList(); if (validationErrors.Any()) { throw new InvalidOperationException( $"Options are not valid:{Environment.NewLine}{Environment.NewLine}{string.Join(Environment.NewLine, validationErrors)}"); } }
/// <summary> /// Validates options and throws exception on errors. /// </summary> /// <param name="options">Options to validate</param> /// <param name="prefix">Options prefix</param> /// <exception cref="ConfigurationValidationException">If options are invalid</exception> public static void AssertValid(this IValidatableOptions options, string?prefix = null) { var errors = options.Validate(prefix); if (errors.Count == 0) { return; } var optionName = String.IsNullOrWhiteSpace(prefix) ? " " : $"{prefix} "; var errorsBuilder = new StringBuilder(); foreach (var validationError in errors) { errorsBuilder.AppendLine($"{validationError.FieldName}: {validationError.Error}"); } var message = $"Option {optionName}are invalid. Errors: {Environment.NewLine}{errorsBuilder}"; throw new ConfigurationValidationException(message, errors); }