代码之家  ›  专栏  ›  技术社区  ›  harishr

fluentvalidation:全局应用于所有字符串属性

  •  0
  • harishr  · 技术社区  · 4 年前

    我想全局验证所有字符串属性,这样它们就不会以“=”字符开头。

    是否有一种方法可以使用FluentValidator对所有字符串属性进行全局验证。

    我已经通过了 documentation 但我找不到任何方法去做!

    0 回复  |  直到 4 年前
        1
  •  1
  •   Repulse3    4 年前

    我认为,如果存在这样的机会,他们会在文档中提到,但正如你所看到的,他们没有。在我看来,添加这样的工具不是一个好主意,因为在所有具有特定类型的验证器实例之间共享验证规则可能会导致意外的验证结果。这也意味着您必须制作一个工具,可以从全局上下文中排除特定的验证器。所以比较一下编辑一个。cs文件与你的验证器一起用于具体类型,不必害怕将验证逻辑交给其他人使用,这样会使你的代码不那么可靠,更难理解和记忆。还活着吗?

    但如果您确定可以在验证器之间共享验证规则,那么就可以使用基类来存储这些规则(正如您在评论中提到的)。

    例子:

    public class Parent
    {
        public string ParentValue1 { get; set; }
    
        public string ParentValue2 { get; set; }
    }
    
    public class Child : Parent
    {
    }  
    

    和验证程序:

    public class ParentValidator : AbstractValidator<Parent>
    {
        public ParentValidator()
        {
            RuleFor(x => x.ParentValue1).NotEmpty();
            RuleFor(x => x.ParentValue2).NotEmpty();
        }
    }
    
    public class ChildValidator : AbstractValidator<Child>
    {
        public ChildValidator()
        {
            Include(new ParentValidator());
        }
    }