Проверка на текучесть для нулевого ИЛИ минимальная максимальная длина строки - PullRequest
1 голос
/ 09 июля 2019

Я не могу найти вопрос о точной задаче экзамена, поэтому я пишу свой.

Мне нужно проверить модель с несколькими строковыми свойствами.Каждый из них может быть либо Null, либо между 1 и 100 символами.

У меня есть несколько других валидаторов, где я использую этот подход:

RuleFor(model => model.Name)
            .Must(name => string.IsNullOrEmpty(name) || name.Length > minLength)
            .WithErrorCode(ErrorCodes.MinStringLength)
            .WithState(model => new
            {
                expected = minLength,
                actual = model.Name.Length
            });

Однако мне также нужнопроверить на maxLength, что в основном дублирует вышеприведенное выражение, но на name.Length < maxLength.Учитывая, что мне нужно проверить более одного свойства таким образом, я чувствую, что можно провести некоторую оптимизацию, чтобы уменьшить количество кода, необходимого для этого.

Одна вещь, которую я начал реализовывать, но не мог понятькак заставить это работать:

RuleFor(model => model.Name)
            .Must(name => string.IsNullOrEmpty(name) || (name.Length > minLength || name.Length < maxLength))
            .WithErrorCode(name.Length <= minLength ? ErrorCodes.MinStringLength : ErrorCodes.MaxStringLength)
            .WithState(model => new
            {
                expected = model.Name <= minLength ? minLength : maxLength,
                actual = model.Name.Length
            });

Проблема здесь в том, что в .WithErrorCode(.. у меня нет доступа к name или model.Я предполагаю, что могу назначить их переменным за пределами RuleFor, но я не уверен в этом конкретном подходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...