Q-->question        A-->answer        M-->mention
          The Chapter 17th  Attribute

M:利用自定义属性,我们可以实现一种新编程方式=>声明式编程,其是指使用数据而不是写源代码来指示程序/组件去做某事.
  使用数据-->  declarative programing
  写源代码-->  imperative  programing

M:定义"自定义属性"是一种特殊的技术,它允许和命令式编程(C#源码)配合使用declarative programing,它提供了极大的灵活性,并允许以更简洁的方式来表达意图,它允许定义信息,并将这些信息应用于几乎所有的原数据表项

M:自定义属性同 public private等已经认同的属性一样,只不过它是由用户自己定义的,同样可以应用于方法或者类型,提供此种支持的机制即是Custom Attribute,它能同时在设计时和运行时发挥作用,任何人都可以定义和使用,CLR也有能力予以识别并在元数据中生成它们

M:自定义属性只是将一些附加信息与某个目标元素关联起来的方式,以下为示例=>
  1.DllImport 属性     告诉CLR方法的实现包含在指定的DLL非托管中
  2.Serializable       告诉Serialization Formatter以类型可以进行序列化和反序列化
  3.将AssemblyVersion  应用于程序集,设置程序集版本号
  4.Flag               应用于枚举类型,使余兴类型可以作为位标志使用

M:语法=>  C#使用[]将属性放在目标元素之前,VB使用<>

Q:Custom的实质是什么?
A:其实际是一个类型实例,为了保持与CLS的相容,所有自定义属性都必须直接或间接地从System.Attribute派生,C#只允许使用符合CLS的属性,因此,将一个属性应用于某个元素时,语法类似于调用类的某个实例构造器,险些之外,评议可能提供一些特殊语法,允许设置与属性类关联在一起的公共字段或property,如下=>
  [DllImport("Kernel32",CharSet=CharSet.Auto,SetLastError=true)]

posted on 2007-06-21 12:33  晓木  阅读(170)  评论(0编辑  收藏  举报