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

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] 特性来指定你的自定义特性可以应用于哪些程序元素。
美图云修
商业级AI影像处理工具
50
查看详情
[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是什么?如何创建和使用自定义特性?的详细内容,更多请关注其它相关文章!
# 路由
# .net
# 自定义
# 美图
# 子类
# 应用于
# 等功能
# 表单
# 如何实现
# 与非
# 序列化
# 你可以
# seo网站优化培训价格怎么样
# 沙洋自媒体推广网站
# SEO重庆买房流程
# seo就是压榨人性
# 合肥seo网站建设价格
# 网站建设会议验收
# 济南正规seo推广公司排名
# 融安附近网站建设方案
# 政府网站建设 报价
# 滨州关键词排名方法




