.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开发跳槽❀
评论