.NET中的Attribute是什么?如何创建和使用自定义特性?

星降
发布: 2025-11-25 16:10:02
原创
794人浏览过
Attribute是.NET中用于添加元数据的机制,通过继承System.Attribute创建自定义特性,如AuthorAttribute可标注方法作者信息;使用[AttributeUsage]限定应用目标,如仅用于方法且允许多次使用;通过反射在运行时读取特性数据,实现如AOP、插件化等功能。

.net中的attribute是什么?如何创建和使用自定义特性?

Attribute(特性)是 .NET 中一种为代码元素添加元数据的机制。它允许你在类、方法、属性、参数等程序元素上附加声明性信息,这些信息可以在运行时通过反射读取,用于控制行为、配置框架或实现横切关注点。

Attribute 的作用

特性本身不直接影响代码逻辑,但可以被编译器、运行时或第三方库识别和处理。例如:

  • [Obsolete] 标记方法已过时
  • [DllImport] 声明非托管 DLL 导出函数
  • [Serializable] 指示类型可序列化
  • 在 ASP.NET Core 中,[HttpGet] 定义 API 路由行为

这些都通过特性提供额外信息,供框架在运行时使用。

创建自定义特性

要创建自定义特性,需定义一个继承自 System.Attribute 的类。通常以 "Attribute" 结尾命名,但在使用时可省略该后缀。

// 示例:定义一个用于记录方法作者信息的特性

public class AuthorAttribute : Attribute
{
   public string Name { get; }
   public int Version { get; set; }

   public AuthorAttribute(string name)
   {
      Name = name;
   }
}

这个特性包含一个必需参数(name)和一个可选属性(Version)。构造函数参数是必需的,属性可用于额外配置。

限制特性的应用目标

你可以使用 [AttributeUsage] 特性来指定你的自定义特性可以应用于哪些程序元素。

Levity
Levity

AI帮你自动化日常任务

Levity 206
查看详情 Levity

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
public class AuthorAttribute : Attribute
{
   // ...
}

说明:

  • AttributeTargets.Method:只能用于方法
  • AllowMultiple = true:允许在同一元素上多次使用
  • Inherited = false:子类不继承此特性

若未指定,默认可应用于大多数元素且不允许重复。

使用自定义特性

定义后,可以直接在目标代码上使用,省略 "Attribute" 后缀。

public class MyService
{
   [Author("张三", Version = 1)]
   public void DoWork()
   {
      // 方法实现
   }

   [Author("李四")]
   [Author("王五", Version = 2)] // 允许多次使用
   public void ProcessData()
   {
      // 实现
   }
}

在运行时读取特性

通过反射可以获取特性信息并做相应处理。

var method = typeof(MyService).GetMethod("DoWork");
var authorAttr = method.GetCustomAttribute();

if (authorAttr != null)
{
   Console.WriteLine($"作者: {authorAttr.Name}, 版本: {authorAttr.Version}");
}

输出:
作者: 张三, 版本: 1

也可以用 GetCustomAttributes 获取多个实例。

基本上就这些。自定义特性 + 反射,是实现插件化、AOP、序列化配置等功能的基础。

以上就是.NET中的Attribute是什么?如何创建和使用自定义特性?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号