.NET 8中使用开源验证组件FluentValidation,验证就这么简单

llovebo

共 3967字,需浏览 8分钟

 ·

2024-04-10 16:41

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、效果如下:

afe2efd2d8537da4d3078f954412d7a4.webp

上面邮箱输入错误,结果会返回false,并提示邮箱错误。这样通过上面4步骤,一个简单的客户验证就做好了。

结语

本文介绍了在.NET 8 中的 FluentValidation组件的步骤,FluentValidation 提供了一种干净且富有表现力的方式来处理应用程序中的验证。上面的示例所示,使用 FluentValidation 可以将验证逻辑与业务逻辑分开,从而增加代码的维护性和可读性。

希望本文对大家有所收获,大家对开源的FluentValidation组件有什么看法,前端如果有验证过程,后端还有必要验证吗?FluentValidation还有亿元吗?欢迎留言讨论或吐槽。



    

关注公众号DotNet开发跳槽    

浏览 3
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报