AttributeUsage 定义/控制自定义属性的使用

AttributeUsage 类是另一个预定义的属性类,以帮助我们控制自定义属性的使用。亦即我们可以定义自定义属性类的属性。这个类描述了如何使用自定义的属性类。AttributeUsage有三个数据属性可用以修饰我们的自定义的属性: 

ValidOn

定义了自定义属性在哪些程序实体上可被使用。这个可使用实体的列表可通过AttributeTargets枚举类型的OR操作进行设置

[AttributeUsage(AttributeTargets.Class)]
public class ClassTargetAttribute : Attribute
{

}
[ClassTarget]只能在Class上使用!

AttributeTargets的取值:

标记

用途

All

用于任何地方

Assembly

用于组合体

Class

用于类

Contructor

用于构造函数

Delegate

用于委托

Enum

用于枚举

Event

用于事件

Field

用于事件

Interface

用于接口

Method

用于方法

Module

用于模块

Parameter

用于参数

Property

用于属性

Return Value

用于返回值

Struct

用于结构

 

AllowMultiple

定义了是否可在同一个程序实体上同时使用多个属性(同一属性使用多次)进行修饰

AllowMultiple=true时,可以使用多次,AllowMultiple=false时,不能使用多次。

Inherited

定义了自定义属性的修饰是否可由被修饰类的派生类继承.

Inherited=false时,该属性类的子类不能用反射拿到该类的属性。

例:

[AttributeUsage( AllowMultiple = false)]
public class A : Attribute
{

}

public class B: A
{

}
当属性A的AllowMultiple =flase时,现在通过反射在B类上取不到A上面的属性。


 

 

posted @ 2009-03-27 16:28  Rain520  阅读(510)  评论(0编辑  收藏  举报