C# 反射、属性及其他重要主题详解
1. 限制属性的使用
在 C# 中,我们可以将属性应用到类上。而属性本身也是类,有一个预定义属性AttributeUsage可用于自定义属性,它能将属性的使用限制在特定的目标类型集合上。
例如,若要将自定义属性MyAttribute仅应用于方法,可使用如下形式的AttributeUsage:
[ AttributeUsage( AttributeTarget.Method ) ] public sealed class MyAttributeAttribute : System.Attribute { ...AttributeUsage有三个重要的公共属性,如下表所示:
| 名称 | 含义 | 默认值 |
|-------------|--------------------------------------------------------------|--------|
| ValidOn | 存储属性可应用的目标类型列表。构造函数的第一个参数必须是AttributeTarget枚举值 | |
| Inherited | 布尔值,指定属性是否可被修饰类型的派生类继承 | true |
| AllowMultiple | 布尔值,指定目标是否可以应用该属性的多个实例 | false |