FluentValidation 条件验证实战指南:5种高效用法让业务逻辑更智能

FluentValidation 条件验证实战指南:5种高效用法让业务逻辑更智能

【免费下载链接】FluentValidation 【免费下载链接】FluentValidation 项目地址: https://gitcode.com/gh_mirrors/flu/FluentValidation

FluentValidation 是.NET生态中功能强大的数据验证库,其条件验证功能让开发者能够根据特定业务场景灵活应用验证规则。通过When、Unless等条件方法,你可以构建智能的验证逻辑,只在特定条件下执行验证,让代码更加简洁高效。🚀

1️⃣ 基础条件验证:When方法

最基本的条件验证使用When方法,只有当条件为true时才执行验证规则。比如对于VIP客户才需要验证折扣信息:

RuleFor(customer => customer.CustomerDiscount)
    .GreaterThan(0)
    .When(customer => customer.IsPreferredCustomer);

这种单一规则的条件验证适用于简单的业务场景,代码直观易懂。

2️⃣ 反向条件验证:Unless方法

Unless方法与When相反,当条件为false时才执行验证:

RuleFor(customer => customer.Photo)
    .NotEmpty()
    .Unless(customer => customer.IsGuestUser);

3️⃣ 多规则共享条件

当多个规则需要共享相同条件时,可以使用顶层的When方法:

When(customer => customer.IsPreferred, () => {
   RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
   RuleFor(customer => customer.CreditCardNumber).NotNull();
});

这种方式避免了重复的条件判断,提高了代码复用性。

4️⃣ 条件分支:Otherwise方法

FluentValidation 支持完整的条件分支逻辑,类似于if-else结构:

When(customer => customer.IsPreferred, () => {
   RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
}).Otherwise(() => {
   RuleFor(customer => customer.CustomerDiscount).Equal(0);
});

[![FluentValidation条件验证流程图](https://raw.gitcode.com/gh_mirrors/flu/FluentValidation/raw/5c6f518ef9569d6dc922ccc66d7afe5768a94bc9/fv-small.png?utm_source=gitcode_repo_files)](https://link.gitcode.com/i/870ff9969318776e35814ef0ba56ddf6)

## 5️⃣ 精确条件控制

默认情况下,条件会应用于同一`RuleFor`调用中的所有前置验证器。如果需要精确控制条件的作用范围,可以指定`ApplyConditionTo.CurrentValidator`:

```csharp
RuleFor(customer => customer.CustomerDiscount)
    .GreaterThan(0).When(customer => customer.IsPreferredCustomer, ApplyConditionTo.CurrentValidator)
    .EqualTo(0).When(customer => !customer.IsPreferredCustomer, ApplyConditionTo.CurrentValidator);

🎯 最佳实践建议

  1. 性能优化:FluentValidation 会自动缓存共享条件的执行结果,避免重复计算
  2. 代码组织:复杂的条件逻辑建议使用单独的验证器类
  3. 可读性:为复杂条件命名,使用描述性的变量名

通过这5种条件验证用法,你可以构建出既灵活又高效的验证逻辑,完美适应各种复杂的业务需求。FluentValidation 的条件验证功能让你的应用更加智能和健壮!💪

源码参考:ConditionBuilder.cs | AbstractValidator.cs

【免费下载链接】FluentValidation 【免费下载链接】FluentValidation 项目地址: https://gitcode.com/gh_mirrors/flu/FluentValidation

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值