← Назад в блог

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();
}

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта — запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок