反射描述了在运行过程中检查和处理程序元素的功能。
定制特性
- C#编译器会把Attribute添加到特性名后,然后在其搜索路径的所有命名空间中搜索同名类。但如果特性名以Attribute结尾就不会在其后添加。
- 特性类直接或间接派生自System.Attribute。
- 特性类通过AttributeUsage来表示定制特性可以应用到哪些类型的程序元素上。
- 把特性应用于程序元素上时,应把特性放在元素前面的方括号中。Assembly和Module除外,它们可以放在源代码的任何地方,但需要用关键字assembly和module。如:
[assembly:SomeAssemblyAttribute(Parameters)]
[module:SomeModuleAttribute(Parameters)] - 特性类的构造函数的参数为必选参数
- 特性类的公共属性或公共字段做为特性的可选字段
反射
- 获取指向给定类型的Type引用有3种常用方式。
1. 使用C# typeof运算符
2. 使用GetType方法
3. 还可以调用Type类的静态方法 - Type类型是许多反射技术的入口。