推荐一个 .NET 最好用的规则验证库

什么是 FluentValidation?

FluentValidation 是一个开源的 .NET 库,用于验证对象的属性。它旨在提供一种简单而强大的方式来定义和执行验证规则,使得验证逻辑的编写和维护变得更加直观和容易。

与传统的数据注解相比,FluentValidation 提供了更灵活、可扩展的验证规则定义方式。它的设计理念是通过一种流畅的、易于理解的语法来描述验证规则,从而提高代码的可读性和可维护性。

安装和配置

首先,您需要通过 NuGet 安装 FluentValidation 库。在 Visual Studio 中,可以通过 NuGet 包管理器控制台执行以下命令:

Install-Package FluentValidation

使用示例

非空验证:

RuleFor(x => x.FirstName).NotEmpty().WithMessage("名字不能为空");

范围验证:

RuleFor(x => x.Age).InclusiveBetween(18, 99).WithMessage("年龄必须在18到99岁之间");

字符串长度验证:

RuleFor(x => x.UserName).Length(3, 15).WithMessage("用户名长度必须在3到15之间");

正则表达式验证:

RuleFor(x => x.Email).Matches(@"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
                    .WithMessage("请输入有效的邮箱地址");

高级用法:

自定义验证规则:

RuleFor(x => x.Discount).Custom((value, context) =>
{
    if (value < 0 || value > 100)
    {
        context.AddFailure("折扣必须在0到100之间");
    }
});

条件验证:

When(x => x.IsVip, () =>
{
    RuleFor(x => x.SpecialOffer).NotEmpty().WithMessage("VIP会员必须有特别优惠");
});

异步验证:

RuleForAsync(x => x.UserName).MustAsync(async (username, cancellation) =>
{
    var isUnique = await _userService.IsUserNameUniqueAsync(username);
    return isUnique;
}).WithMessage("用户名已存在");

自定义错误消息:

RuleFor(x => x.ZipCode).NotEmpty().WithMessage("邮政编码不能为空")
                      .Matches(@"^\d{5}$").WithMessage("请输入有效的5位数字邮政编码");

FluentValidation 是一个优雅而功能丰富的验证库,它在提高代码可读性和可维护性的同时,保持了高度的灵活性。它不仅适用于简单的验证需求,还能够处理复杂的业务规则,使开发人员能够更轻松地确保数据的有效性。

往期推荐:

功能强大,基于 .NET 实现的分布式锁

一行代码,监控 C# 方法执行耗时

Sejil - 开箱即用的 .NET 日志管理组件

CsGo - C#并发流程控制框架,单线程调度每秒100万次以上

C# 开发的高速 .NET 模板引擎

项目地址

https://github.com/FluentValidation/FluentValidation

cd1d6a0fc86958d29e420baa1855519e.png

分享

e2768f21bc83c3d22e0b8306d4fec6a5.png

点收藏 

463b21609b9b59a88342678b3b33773b.png

点点赞

8bbbc4b8114fe8c81ff76c467a7007a4.png

点在看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值