(十二)反射与特性-自定义特性(2)

本文详细探讨了C#中的自定义特性,包括如何声明和使用特性构造函数,以及如何限制特性的使用。重点讲解了AttributeUsage特性如何控制特性应用的目标,并提供了自定义特性实践的建议,如确保特性表示目标结构的状态,使用位置参数和命名参数,并通过AttributeUsage显式指定目标。同时,还介绍了如何通过Type对象的IsDefined和GetCustomAttributes方法来访问和检查特性。
摘要由CSDN通过智能技术生成

一、自定义特性

特性是一种特殊的类。
要点:

  • 用户自定义的特性类叫作自定义特性。
  • 所有特性类都派生自 System.Attribute

1、声明自定义特性

声明:

public sealed class MyAttributeAttribute : System.Attribute
{
...
}

由于特性持有目标的信息,所有特性类的公有成员只能是:

  • 字段
  • 属性
  • 构造函数

2、使用特性的构造函数

构造函数的显式隐式声明定义,以及重载等等,规则跟其他类一样。

public MyAtrributeAttribute(string desc, string ver)
{
...
}

3、指定构造函数

[MyAttribute("Holds a value")]//使用一个字符串的构造函数
public int MyField;
[MyAttribute("Version 1.3", "Galen Daniel")]//使用两个字符串的构造函数
public void MyMethod()
{
...
}
//MyAttribute:特性类

特性构造函数要点:

  • 构造函数的实参必须是在编译时能确定值的常量表达式。
  • 如果构造函数没有参数,代码如下:
[MyAttr]
class SomeClass...
[MyAttr()]
class OtherClass...

4、使用构造函数

//命令语句
MyClass mc = new MyClass("Hello", 5);
//声明语句
[MyAttribute("Holds a value")]

特性类和其他类,比较构造函数的使用:

  • 命令语句的实际意义是:“在这里创建新的类。
  • 声明语句的意义是:“这个特性和
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值