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)]