C# 利用特性(Attribute)实现自定义验证

简介: 通过自定义特性(如RequiredAttribute)标记类属性,利用反射实现数据验证逻辑。示例代码展示了如何在对象中检查必填字段,并输出验证错误信息,实现灵活的数据校验机制。

自定义特性标记类或属性,通过反射实现数据验证逻辑。

// 自定义必填特性
[AttributeUsage(AttributeTargets.Property)]
public class RequiredAttribute : Attribute { }
// 数据验证工具
public class DataValidator
{
    public static bool Validate(object obj, out List<string> errors)
    {
        errors = new List<string>();
        var properties = obj.GetType().GetProperties();
        foreach (var prop in properties)
        {
            var requiredAttr = prop.GetCustomAttribute<RequiredAttribute>();
            if (requiredAttr != null)
            {
                var value = prop.GetValue(obj);
                if (value == null || string.IsNullOrEmpty(value.ToString()))
                {
                    errors.Add($"{prop.Name} 为必填项");
                }
            }
        }
        return errors.Count == 0;
    }
}
// 测试实体
public class User
{
    [Required]
    public string Name { get; set; }
    public int Age { get; set; }
}
// 调用示例
public static void TestAttribute()
{
    var user = new User { Age = 25 };
    if (!DataValidator.Validate(user, out var errors))
    {
        foreach (var err in errors) Console.WriteLine(err);
    }
}
相关文章
|
2天前
|
存储 开发框架 缓存
C# 实现图片验证码的 WebAPI 版(ASP.NET Core)
基于ASP.NET Core实现的验证码服务,生成带干扰线和随机旋转文字的4位图文验证码,支持内存存储与验证。需安装System.Drawing.Common包。
|
存储 SQL API
milvus insert api流程源码分析
milvus insert api流程源码分析
627 3
|
2月前
|
机器学习/深度学习 人工智能 算法
PAIFuser:面向图像视频的训练推理加速框架
阿里云PAI推出PAIFuser框架,专为视频生成模型设计,通过模型并行、量化优化、稀疏运算等技术,显著提升DiT架构的训练与推理效率。实测显示,推理耗时最高降低82.96%,训练时间减少28.13%,助力高效低成本AI视频生成。
307 22
|
2月前
|
SQL JSON 分布式计算
【跨国数仓迁移最佳实践6】MaxCompute SQL语法及函数功能增强,10万条SQL转写顺利迁移
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第六篇,MaxCompute SQL语法及函数功能增强。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
302 20
|
11天前
|
监控 安全 Unix
iOS 崩溃排查不再靠猜!这份分层捕获指南请收好
从 Mach 内核异常到 NSException,从堆栈遍历到僵尸对象检测,阿里云 RUM iOS SDK 基于 KSCrash 构建了一套完整、异步安全、生产可用的崩溃捕获体系,让每一个线上崩溃都能被精准定位。
176 32
|
1天前
|
弹性计算 前端开发 NoSQL
2026年阿里云服务器 2 核 8G、4 核 16G、8 核 32G 配置:价格解析与选型说明
在云服务器选型中,2 核 8G、4 核 16G、8 核 32G 是三类极具代表性的配置,均遵循 1:4 的 CPU 与内存黄金配比,覆盖从个人开发者入门到中小企业核心业务的全场景需求。2 核 8G 适合轻量应用部署,4 核 16G 适配中负载业务运行,8 核 32G 则能支撑高并发、大数据量处理场景。下面结合最新信息,梳理这三类配置的价格体系、影响因素及选型建议,帮助精准控制成本。
|
2月前
|
存储 缓存 Java
重构一个类,JVM竟省下2.9G内存?
通过重构核心类,将 `HashMap<Long, HashSet<String>>` 优化为 `Long2ObjectOpenHashMap<int[]>`,结合数据分布特征与紧凑存储,JVM 堆内存从 3.13GB 降至 211MB,降幅达 94%,验证了高效数据结构在海量场景下的巨大价值。
322 24
重构一个类,JVM竟省下2.9G内存?

热门文章

最新文章