c#如何使用FluentValidation实现项目校验?附完整实例源码

来源:站长站作者:会飞的猪头衔:草根站长
导读:本期聚焦于小伙伴创作的《c#如何使用FluentValidation实现项目校验?附完整实例源码》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《c#如何使用FluentValidation实现项目校验?附完整实例源码》有用,将其分享出去将是对创作者最好的鼓励。

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

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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。