具有两个验证器的类型的FluentValidation SetValidator应用了错误的验证器

问题描述

我有两个验证器来验证同一类型:

public class Foo {
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }
}

public class Foovalidator1 : AbstractValidator<Foo> {
    public Foovalidator1() {
        RuleFor(x => x.Prop1).NotNull();
    }
}

public class Foovalidator2 : AbstractValidator<Foo> {
    public Foovalidator2() {
        RuleFor(x => x.Prop1).NotNull();
        RuleFor(x => x.Prop2).NotNull();
    }
}

一个具有此类属性父类

public class Bar {
    public Foo Foo { get; set; }
}

我将第一个验证器应用于另一个验证器,如下所示:

public class BarValidator : AbstractValidator<Bar> {
    public BarValidator() {
        RuleFor(x => x.Foo).SetValidator(new Foovalidator1());
    }
}

Fluentvalidation配置为在MVC管道中进行验证:

    internal static void Cofigure(FluentValidationMvcConfiguration config) {
        config.RegisterValidatorsFromAssemblyContaining<Foovalidator>();
        config.RunDefaultMvcValidationAfterFluentValidationExecutes = false;
        config.ValidatorFactoryType = typeof(HttpContextServiceProviderValidatorFactory);
    }

Swagger配置为显示fluentvalidation规则:

config.AddFluentValidationRules();

但是出于某种原因,应用了另一条规则的验证:

enter image description here

如果我删除Foovalidator2,则将应用正确的验证器。 我在做错什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)