C# FluentValidation: кастомные валидаторы с динамическими сообщениями об ошибках
- Опубликовано
- • 1 мин чтения•--- просмотров
Ссылка на проект: [FluentValidation Custom Validators]
Полезная статья, если хочешь кастомизировать свою валидацию (например, привязать параметры к сообщению об ошибке): [ссылка]
Вот пример кастомного валидатора с сообщениями об ошибках, использующими привязку параметров (спасибо пользователю danludwig), из этого поста на StackOverflow: [ссылка]
public class IsProcessFileValid : PropertyValidator
{
public IsProcessFileValid(): base({ValidationMessage}) {}
protected override IsValid(PropertyValidatorContext context)
{
if (!IsProcessFileValid1(context))
context.MessageFormatter.AppendArgument(ValidationMessage,
Custom validation message #1);
if (!IsProcessFileValid2(context))
context.MessageFormatter.AppendArgument(ValidationMessage,
Custom validation message #2);
// ...etc
return true;
}
private bool IsProcessFileValid1(PropertyValidatorContext context)
{
// logic
return false;
}
private bool IsProcessFileValid2(PropertyValidatorContext context)
{
// logic
return false;
}
// ...etc
}
public static class IsProcessFileValidExtensions
{
public static IRuleBuilderOptions<T, object> MustBeValidProcessFile<T>
(this IRuleBuilder<T, object> ruleBuilder)
{
return ruleBuilder.SetValidator(new IsProcessFileValid());
}
}
public CreateProcessValidator()
{
RuleFor(x => x.ProcessFile).MustBeValidProcessFile();
}
Содержание
По теме
Статьи
Юнит-тестирование C# с Moq: проверка вызовов методов и исключений
Практическое руководство по использованию библиотеки Moq для юнит-тестирования в C#: как проверять вызовы методов, обрабатывать исключения и тестировать логику логирования.
Переменные окружения и секреты в .NET Core: лучшие практики
Как безопасно управлять переменными окружения и секретами в .NET Core: практические советы по конфигурации и примеры кода.
Структура проекта и тестирование в .NET Core 6 vs .NET Core 5: юнит-тесты, GraphQL и test server fixtures
Практическое сравнение структуры проектов .NET Core 5 и 6 с реальными примерами юнит-тестирования, интеграции GraphQL и настройки test server fixture.
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок