.NET 8中使用开源验证组件FluentValidation,验证就这么简单
FluentValidation简介
FluentValidation 是 .NET 的开源验证库,它是使用 Fluent 接口的 .NET 验证库,以及可以lambda 表达式来构建强类型验证规则的 ,这样可以让开发人员以清晰简洁的方式表达验证逻辑,使其易于读取、编写和维护。在github有8.6k的Star,还是不错的.NET开源组件。 github地址 :github.com/FluentValidation/FluentValidation 文档地址 :docs.fluentvalidation.net在.NET 8中使用FluentValidation
FluentValidation更新也比较快,同步支持.NET 8。下面将介绍在.NET 8中使用步骤。
1、安装 FluentValidation的NuGet 包
 新建一个.NET 8控制台项目,使用nuget包管理器搜索FluentValidation安装或者用如下nuget控制台命令安装。 
      
        dotnet add package FluentValidation
      
     
 2、新建一个客户测试模型来做验证
客户测试模型有姓名,地址,邮编等,如下:
public class Customer{public string Name { get; set; }public string Address { get; set; }public string Postcode { get; set; }public int Discount { get; set; }public string Email { get; set; }public int age { get; set; }public bool disDiscount { get; set; }}
3、使用 FluentValidation来验证
新建一个验证类,继承泛型接口AbstractValidator,并在这个类中写验证规则。代码如下:
public class CustomerValidator : AbstractValidator<Customer>{public CustomerValidator(){RuleFor(x => x.Name).NotEmpty().WithMessage("姓名不能为空");//判断为空//不允许等于0。该规则还包含一个条件,即只有当disDiscount属性为真时才生效。RuleFor(x => x.Discount).NotEqual(0).When(x => x.disDiscount);RuleFor(x => x.Address).Length(20, 250);//长度//自定义验证RuleFor(x => x.Postcode).Must(BeAValidPostcode).WithMessage("请输入邮政编码");//验证邮箱RuleFor(x => x.Email).EmailAddress().WithMessage("请输入正确的邮箱");}private bool BeAValidPostcode(string postcode){return true;// 自定义规则}}
4、调用规则
在main方法中模拟调用。
static void Main(string[] args){var customer = new Customer();customer.Name = "张山";customer.Email = "aaa";var validator = new CustomerValidator();// 验证规则ValidationResult results = validator.Validate(customer);// 验证结果是否通过bool success = results.IsValid;//返回当前错误信息List<ValidationFailure> failures = results.Errors;}
上面是个调用的demo,需要验证的话可以用results.IsValid来进行条件判断,并写验证通过逻辑。
5、效果如下:
 
上面邮箱输入错误,结果会返回false,并提示邮箱错误。这样通过上面4步骤,一个简单的客户验证就做好了。
结语
本文介绍了在.NET 8 中的 FluentValidation组件的步骤,FluentValidation 提供了一种干净且富有表现力的方式来处理应用程序中的验证。上面的示例所示,使用 FluentValidation 可以将验证逻辑与业务逻辑分开,从而增加代码的维护性和可读性。
 希望本文对大家有所收获,大家对开源的FluentValidation组件有什么看法,前端如果有验证过程,后端还有必要验证吗?FluentValidation还有亿元吗?欢迎留言讨论或吐槽。 
 
关注公众号↑↑↑:DotNet开发跳槽❀
评论
