在c#项目开发中,数据校验是保证业务数据合法性的重要环节,FluentValidation是一款基于流畅接口设计的校验库,能够让校验规则的编写更简洁易读。本文将从基础使用到项目集成,完整讲解其应用方法。

FluentValidation基础介绍
FluentValidation支持对各类实体对象定义校验规则,核心是通过继承AbstractValidator<T>类创建对应实体的校验器,在构造函数中通过链式语法配置校验逻辑。它内置了丰富的校验规则,比如非空校验、长度校验、范围校验、格式校验等,也支持自定义校验规则,满足复杂的业务场景需求。
环境准备与引入
首先需要引入FluentValidation的NuGet包,在项目包管理控制台执行以下命令即可完成安装:
// 安装FluentValidation包 Install-Package FluentValidation
如果是.NET Core项目,还可以根据需求安装对应的扩展包,方便集成到依赖注入容器中。
项目实例完整实现
1. 定义实体类
首先创建一个用户实体类,作为校验的目标对象:
public class User
{
/// <summary>
/// 用户ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 用户名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 邮箱地址
/// </summary>
public string Email { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
}
2. 编写校验器类
针对User实体创建对应的校验器,继承AbstractValidator<User>并在构造函数中定义规则:
using FluentValidation;
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
// 用户名非空,长度在2-20之间
RuleFor(user => user.UserName)
.NotEmpty().WithMessage("用户名不能为空")
.Length(2, 20).WithMessage("用户名长度需要在2到20个字符之间");
// 邮箱非空,格式符合邮箱规则
RuleFor(user => user.Email)
.NotEmpty().WithMessage("邮箱不能为空")
.EmailAddress().WithMessage("请输入合法的邮箱地址");
// 年龄需要在18到60之间
RuleFor(user => user.Age)
.InclusiveBetween(18, 60).WithMessage("年龄需要在18到60岁之间");
// 自定义校验:ID必须大于0
RuleFor(user => user.Id)
.GreaterThan(0).WithMessage("用户ID必须大于0");
}
}
3. 调用校验逻辑
在业务代码中创建校验器实例,调用Validate方法即可完成校验,获取校验结果:
class Program
{
static void Main(string[] args)
{
// 创建测试用户对象
var user = new User
{
Id = 0,
UserName = "张",
Email = "testippipp.com",
Age = 17
};
// 创建校验器实例
var validator = new UserValidator();
// 执行校验
var validationResult = validator.Validate(user);
// 判断校验是否通过
if (!validationResult.IsValid)
{
Console.WriteLine("校验未通过,错误信息如下:");
foreach (var error in validationResult.Errors)
{
Console.WriteLine($"属性:{error.PropertyName},错误:{error.ErrorMessage}");
}
}
else
{
Console.WriteLine("数据校验通过");
}
}
}
校验结果说明
上述测试数据的校验结果会输出以下信息:
- 属性:Id,错误:用户ID必须大于0
- 属性:UserName,错误:用户名长度需要在2到20个字符之间
- 属性:Email,错误:请输入合法的邮箱地址
- 属性:Age,错误:年龄需要在18到60岁之间
如果所有规则都通过,validationResult.IsValid会返回true,说明数据符合所有校验要求。
复杂场景扩展
FluentValidation还支持条件校验、集合校验、关联属性校验等复杂场景。比如可以设置只有当年龄小于18时,才需要额外校验监护人信息,或者对一个列表中的每个元素都执行相同的校验规则,开发者可以根据实际业务需求灵活扩展校验逻辑。
c#FluentValidation数据校验项目实例修改时间:2026-06-09 05:27:20