使用FluentValidation和Custom()
规则,我希望能够验证子对象的集合,并为每个无效的子对象返回ValidationFailure
。
我无法使用集合验证器,因为子对象不包含执行规则的正确信息 - 它必须在父级的上下文中运行。
然而,Custom()
API限制我返回单个ValidationFailure
或根本不返回任何内容。
我可以使用哪种模式允许单个规则生成多个错误?
答案 0 :(得分:0)
我找到了一个很好的解决方案 - 使用带有DelegateValidator的AddRule()。
public MyValidator : AbstractValidator<MyClass>
{
public MyValidator()
{
AddRule(new DelegateValidator<MyClass>(MyRule));
}
private IEnumerable<ValidationFailure> MyRule(
MyClass instance,
ValidationContext<MyClass> context)
{
var result = new List<ValidationFailure>();
// add as many failures to the list as you want:
var message = "This is not a valid message";
result.Add(new ValidationFailure(nameof(MyClass.SomeProperty), message));
return result;
}
}