SuperAPI AI 工具集

dotnet-fluent-validation

编程与开发

查看项目

更新于 10-16 02:10

技能介绍

用途

dotnet-fluent-validation 用于为 .NET 项目中的命令(Command)和查询(Query)生成 FluentValidation 验证器。它面向采用整洁架构、以 CQRS 组织代码的项目,帮助把验证逻辑从领域模型中分离出来,并通过 MediatR 管道行为实现自动验证。

主要能力

  • 声明式规则:通过 RuleFor 链式调用构建可读、易维护的强类型验证规则。
  • 内置验证器:涵盖字符串(NotEmpty、NotNull、Length、MinimumLength、MaximumLength、Matches、EmailAddress、CreditCard、Equal、NotEqual)、数值(GreaterThan、GreaterThanOrEqualTo、LessThan、LessThanOrEqualTo、InclusiveBetween、ExclusiveBetween、PrecisionScale)、集合(NotEmpty、NotNull、Must、ForEach)与比较(跨属性比较、NotEqual)等类别。
  • 自定义验证器:可继承 PropertyValidator 实现可复用组件,并按示例通过扩展方法以流式方式调用。
  • 异步验证:通过 MustAsync 执行数据库检查,例如名称唯一性、外键存在性。
  • 嵌套与集合校验:使用 SetValidator 校验嵌套对象,使用 RuleForEach 结合 ChildRules 校验集合元素,并可做跨元素校验(如去重、总价上限)。
  • 条件验证:使用 When 与 Unless 按条件启用或跳过规则。
  • 与 MediatR 集成:通过管道行为实现命令/查询的自动验证。

使用方式

验证器通常放在 Application/{Feature}/Create{Entity}/ 等目录下,文件命名为 Create{Entity}CommandValidator.cs,也可内联在 Command 同一文件中。基本写法为继承 AbstractValidator<TCommand>,在构造函数中用 RuleFor 定义规则;自定义消息通过 WithMessage 指定。可复用验证器单独放在 Validators/ 目录。异步验证需注入仓储,将数据库查询放在 MustAsync 委托中。

适用场景

  • 需要为 CQRS 命令与查询建立统一验证入口的 .NET 项目。
  • 需要在应用层而非领域层进行输入校验的整洁架构项目。
  • 需要复用验证规则(如地址、邮箱、电话)的多功能模块。

限制与注意事项

  • 资料建议优先在 Handler 中做存在性检查,以更好地分离关注点并提升可测试性,异步验证应谨慎使用。
  • 资料未提供具体安装命令、NuGet 包版本或与 MediatR 管道集成的完整代码,相关内容暂未提供。