×

C# 反射与特性 (Attribute) :动态配置、ORM、权限校验三大场景精讲

独孤求败 独孤求败 发表于2026-04-24 09:21:29 浏览38 评论0

抢沙发发表评论

在 C# 开发中,反射 + 特性是进阶必备技能,它们是框架设计的核心武器:特性给代码打标签,反射动态读取标签,无需硬编码就能实现灵活逻辑。

本文用极简代码,带你吃透三大核心用法:动态配置、轻量 ORM、权限校验,新手也能快速上手。



一、基础概念:什么是反射与特性?


1. 特性 (Attribute)


  • 类、方法、属性打「标记」的注解,不影响代码运行,仅存储元数据;
  • 格式:[特性名(参数)],C# 自带[Obsolete],也可自定义。

2. 反射 (Reflection)


  • 程序运行时,动态读取类型、属性、方法、特性的能力;
  • 核心类:TypeAssemblyAttribute.GetCustomAttribute()




二、场景 1:动态配置(极简版)


核心思路


用特性标记配置项,反射自动读取,无需手动赋值,实现配置解耦。

完整极简代码


图片

知识点


  1. 自定义特性需继承Attribute
  2. [AttributeUsage]

    限定特性使用范围;
  3. Type.GetProperties()

    +GetCustomAttribute()反射读取特性;
  4. PropertyInfo.SetValue()

    动态赋值。




三、场景 2:轻量 ORM 框架(映射数据库)


核心思路


特性标记「类对应表、属性对应列」,反射自动生成 SQL,告别硬编码。

完整极简代码


图片

知识点


  1. 特性分离「实体类」与「数据库结构」,修改表名无需改代码;
  2. 反射批量读取特性,自动生成 SQL;
  3. 真实 ORM(EF/Dapper)底层均基于此原理。




四、场景 3:权限校验(方法拦截)


核心思路


特性标记「需要什么权限」,反射动态校验,统一权限逻辑。

完整极简代码


图片

知识点


  1. 特性声明权限规则,无侵入式代码;
  2. 反射获取方法特性,统一做权限拦截;
  3. 常用于 API 接口、后台管理权限系统。




五、核心总结


  1. 特性 = 打标签:存储元数据,不影响业务逻辑;

  2. 反射 = 读标签:运行时动态解析,实现灵活扩展;

  3. 三大场景:

    • 动态配置:自动绑定配置项;
    • ORM 框架:实体与数据库自动映射;
    • 权限校验:统一拦截、动态鉴权。

反射 + 特性是 C# 框架设计的基石,学会它,就能轻松读懂各类开源框架源码!


群贤毕至

访客