天道酬勤

.Net Frame 演示 by Leeson [TM]

导航

.Net Framework Programming 读书笔记(14)

[2005-05-31]

16.0 定制特性

最具有创新的一种构造:定制特性(custom attribute)。

16.1 使用定制特性

定制特性是为目标元素提供关联附加信息的一种方式。C#只允许我们将特性应用于定义以下构造的源代码中:
    程序集/模块/类型/字段/方法/方法参数/方法返回值/属性/事件。

一个特性是一个类型的实例。特性必须直接/间接继承System.Attribute

16.2 定义自己的特性

16.3 特性构造器与字段/属性的数据类型

可把定制特性看作是一些被序列化为字节流的类型实例,这些字节流在编译时被储存在生成模块的元数据中。

注意:
每个参数的序列化方式为前面1个字节的类型ID,后面紧接着参数值。在“序列化”完构造器参数之后,编译器开始存放每一个指定的字段和属性的值。

[2005-06-15]

16.4 检测定制特性(Attribute)

定义一个特性类型本身没有什么用处。如我们定义了自己的特性类型,我们还必须实现某些代码来检测目标元素上是否应用了这些特性类型的实例,然后根据检测结果执行相应代码路径。

注意:反射类型中的方法仅认为应用于类和方法的特性才是可继承的。也就是如果我们用EventInfo、PropertyInfo或者ParameterInfo来调用IsDefined或GetCustomAttributes方法,他们将忽略传入的inherit参数,而假定其为false。只有Attribute类型中的方法才会为事件、属性和参数考虑inherit参数。

16.5 特性实例间的匹配

我们要查看特性实例的字段中有着什么样的值。

[2005-06-17]

委托

回调函数,委托(delegate)的技术提供回调实现。

posted on 2005-07-19 22:08  我自横刀哈哈笑  阅读(185)  评论(0)    收藏  举报