08 2007 档案
摘要:1.NET组件的层次: 2.获取元数据,以下3个方法分别获取Type,Event,Properties的元数据: 对于Type,通过TypeDescriptor静态类,获取其默认事件,默认属性,以及该类型所带的所有Attribute(通过枚举取得) 可以通过TypeDescriptor.GetEvents静态方法获取事件集合EventDescriptorCollection,遍...
阅读全文
摘要:1.Attribute,属性(特性),又名元数据,自定义属性。编译期会解释属性,并将对应的标志插入到IL中。 AOP:面向方面的编程,以声明性的方式控制属性。 .NET已有的属性类: 1)Serializable: 仅可用于Class/Struct/Enum/Delegate 2)NotSerialized:仅用于字段 3)AssemblyVersion:仅用于程序...
阅读全文
摘要:第一部分 动态程序集加载 1.创建程序集引用:分2种 全面引用:以引用程序集名称,版本,文化以及公钥标记的方式,进行加载——首选,避免DLL Hell。静态引用的程序总是全部引用 部分引用:只使用程序集名称,而忽略其他所有属性,进行加载。 .Net如何找到要加载的DLL: 首先,运行时要分析应用程序配置文件,包括以下3个级别: ...
阅读全文
摘要:本章是上一章的继续,再获取到对象类型后,接下来做的事情。 第一部分 动态调用成员——调用方法,检索或更改属性,以及字段 方法1:利用Info类调用类成员 1.用MethodInfo类调用方法: object[] Invoke(object obj, Object[] parameters) 其中,第1个参数obj,是对象的实例...
阅读全文
摘要:第一部分:程序集(System.Reflection.Assembly) 1.获取Assembly对象 方法1:调用Assembly的以下4个静态方法Get...()之一: GetAssembly(Type t) GetCallingAssembly() ——返回调用当前方法的方法所在的程序集 GetExecutingAssembly() —...
阅读全文
摘要:1.反射的定义: 反射是在运行时动态分析,操纵和创建对象的机制。——3个功能,依次在以下章节分析。 反射要访问存储于.NET程序集中的元数据,以发现原始代码方面的信息。 2.反射的后期绑定区别于C#中的后期绑定。 C#中采用override方法进行后期绑定——编译期间确定使用那个方法。 反射没有这个限制,直到运行期间才会确定。反射还可以绑定程序集和类型,根据元数据...
阅读全文
摘要:Object o1 = new Object(); Object o2 = new B(); Object o3 = new D(); Object o4 = o3; B b1 = new B(); B b2 = new D(); D d1 =...
阅读全文
摘要:1.Delegate是类型安全的,也就是说,在编译期可以检测出错误;而与之相似的Reflection是类型不安全的。 Delegate是方法地址的指针,而且不区分static和instance方法。 Delegate是定义在Class之外的,这个平级的Class中包括Delegate要使用的方法。 2.Delegate允许引用类型的协变(covariance)和反协变(contra-...
阅读全文
摘要:今天去www.sharpdevelop.com转了一圈,找到了这个东西,不错不错! # Develop change list SharpDevelop 2.2.0.2595 (6/28/2007) Additional and improved templates Boo support updated to version 0.7.8 NUnit sup...
阅读全文