Как использовать плавную проверку для проверки объекта, который содержит больше объектов того же типа? - PullRequest
5 голосов
/ 18 августа 2011

У меня есть класс Action, в котором есть коллекция объектов Action.Примерно так:

public class Action
{
    ICollection<Action> SubActions;
}

Это в основном образует древовидную структуру (я проверяю, что циклов нет).Я использовал Fluent Validation, чтобы написать валидатор для этого класса.Вот моя попытка Валидатора:

public class ActionValidator : AbstractValidator<Action>
{
    public ActionValidator()
    {
        RuleFor(x => x.SubActions).SetCollectionValidator(new ActionValidator());
    }
}

Единство разрушается, когда я пытаюсь разрешить все, что зависит от ActionValidator.Более конкретно, LINQPad аварийно завершает работу, когда пытается разрешить службу, которая зависит от ActionValidator, предположительно из-за переполнения стека.

В моем классе Action есть и другие участники, которых я проверяю, но я просто добавил важную часть для краткости.Если я закомментирую правило, которое я перечислил здесь, оно будет работать нормально (за исключением того, что оно больше не проверяет субакции).

У меня проблема с моим подходом.Я рекурсивно строю валидаторы, пока что-то не умрет.Но я просто не знаю, как сказать Fluent Validation для проверки подобъектов таким образом.

1 Ответ

12 голосов
/ 18 августа 2011

Измените правило, проверяющее тот же тип, на:

Rulefor(x => x.SubActions).SetCollectionValidator(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...