6

我有一个 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 的问题时,Unity 就会崩溃。更具体地说,LINQPad 在尝试解析依赖于 ActionValidator 的服务时崩溃,可能是由于堆栈溢出。

我正在验证我的 Action 类中的其他成员,但为了简洁起见,我只是把重要的部分放在了上面。如果我注释掉我在这里列出的规则,它可以正常工作(除了它不再验证子操作)。

我的方法有问题。我递归地构造验证器,直到某些东西死掉。但我只是不确定如何告诉 Fluent Validation 以这种方式验证子对象。

4

1 回答 1

14

将验证相同类型的规则更改为:

Rulefor(x => x.SubActions).SetCollectionValidator(this);
于 2011-08-18T15:26:24.407 回答