C# 未执行规则集中的FluentValidation验证器

C# 未执行规则集中的FluentValidation验证器,c#,.net,validation,fluentvalidation,C#,.net,Validation,Fluentvalidation,我有一个带有规则集的验证器 public class ApplicationValidator : AbstractValidator<Application> { public ApplicationValidator() { RuleSet("CreateApplication", () => { RuleFor(a => a.SalesChannelBroker)

我有一个带有规则集的验证器

public class ApplicationValidator : AbstractValidator<Application>
{
    public ApplicationValidator()
    {
        RuleSet("CreateApplication", () =>
        {
            RuleFor(a => a.SalesChannelBroker)
                .SetValidator(new BrokerActiveRule());

            RuleFor(ld => ld.LoanDetailSegment)
                .SetValidator(new ProductCodeValidRule());
        });
    }
}

您的
BrokerActiveRule
ProductCodeValidRule
验证器是什么样子的? 它们中的规则是否在
CreateApplication
规则集中定义

如果它们不在规则集中,或者不在
CreateApplication
以外的规则集中,则不会调用它们

我仍然觉得子验证器的行为有点奇怪,但基本上,如果您使用规则集调用父验证器,并且希望调用子验证器,则包含(
SetValidator
在本例中)必须在规则集中,要应用的子验证程序规则也必须在该规则集中

有关更多信息,请参阅

可以通过创建自己的
IValidatorSelector
自定义此行为。这是我正在考虑做的事情(但还没来得及做),因为我有一个案例,其中子验证器有默认的和规则集特定的规则,这意味着我必须在父验证器中包含两次子验证器

// Validate
var validationResult = new ApplicationValidator().Validate(app, ruleSet: "CreateApplication");