我有一个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以这种方式验证子对象。
答案 0 :(得分:12)
将验证相同类型的规则更改为:
Rulefor(x => x.SubActions).SetCollectionValidator(this);