- 6
- 0
- 约4.53万字
- 约 130页
- 2017-08-20 发布于广东
- 举报
* 反射允许我们查找元数据所携带的信息,这个概念并不是新提出来的,在COM中也提供了相应的方法,这里做一简单的回顾。 Type Library 包含了大部分类型的信息,可以嵌入到组件中,也可以与组件放置在一起,可以通过ITypeLib和ITypeInfo接口来查看 Attributes 描述了方法、接口或参数的行为方式 IDispatch IDispatch叫做调度接口,为了使其它语言也可以使用COM,比如说一些脚本语言不支持指针,所以没有办法来调用Com中的虚函数,所以调度接口把每一个函数每一个属性都编上号,客户程序要调用这些函数属性的时侯就把这些编号传给IDispatch接口就行了,IDispatch再根据这些编号调用相应的函数 支持大多数的数据类型 因为COM是为多种语言使用设计的,所以它支持大多数的简单类型,但它是二进制标准的,所以对于一些复杂的类型,需要特别的处理方式 类似的,在C#中,我们应用反射,可以枚举出元数据表中包括的所有类型,对于每个类型,又可以获得它的基类型、它实现的接口、以及与其相关联的一些标记,还可以分析相关的元数据表来查询一个类型的字段,方法,属性,事件以及定制特性,这样就可以在运行时而不是编译时显式的加载程序集,构造类型实例,并调用类型上的方法实现类似于Win32中LoadLibrary功能的晚绑定(late binding),当需要修改时,可以只修改特定模块中的程序,只要接口不发生变化,主程序就不需要重新编译,相当于实现动态链接库(DLL)的功能 * 元数据(编译以后的最基本数据单元)本质上是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码 * System.Type获取类型的名称 System.Reflection.Assembly获得指定装配件的元数据,也包含执行一个装配件的方法 * 首先,从一个应用程序域出发,可以得到其内加载的所有程序集,根据程序集,又可以得到组成它所有的模块。由程序集或者模块,可以得到它里面定义的所有类型。最后根据类型,可以得到它的嵌套类型、字段、构造器、方法、属性以及事件 * 通过反射,我们获得一个类型的Type对象引用,可以创建出该类型的实例 * 在前面学习了程序集(assembly),定制属性(attribute),和本节的反射(reflect)后,看它们是怎样组织在一起应用的。 * 紫色部分为Framework * 这些新特性是怎样实现的,下面从各个组成部分来具体讲述 * 对于整个.NET框架来说,这三个概念非常重要。要实现多语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对私有语言进行标准化处理。CTS提供了这个概念,还提供了定义定制类的规则;CLS是确保代码可以在任何语言中访问的最小标准集合,所有用于.NET的编译器都应支持CLS。CLS构成了可以在.NET和IL中使用的功能子集,代码也可以使用CLS外部的功能。如果非CLS功能在代码所在的程序集的外部是可见的,那么这些功能就不能在某些语言中使用;CLR处于操作系统和代码之间,是整个Framework的核心,负责代码的编译、执行、管理等所有工作 * .NET分布式编程-C#篇19页 .NET框架程序设计(修订版)25页 * NET框架程序设计(修订版)26页 所有类型都必须(直接或间接)继承自预定义类型System.Object,Object作为根类型保证了每个类型实例都有一组公共行为,具体说,每个类型都具有以下的方法: 判断两个实例是否相等 获得实例的散列码 查询实例的类型 执行实例的浅拷贝 获得实例当前状态的字符串表示 清理资源 * NET框架程序设计(修订版)27页 * NET框架程序设计(修订版)28页 在VB.net中没有UInt32类型,也不区分大小写 因为是公有方法,当被其它语言写的类继承时,调用会发生错误 * Microsoft?.NET Explained7页 * 我们都知道非托管代码是针对某一特定CPU平台所编译的,当它们被调用时,这些代码便会立即执行。而在托管环境中,代码的编译要经过两个阶段才能完成,首先,编译器需要扫描源代码,将其编译为IL代码。当执行这些代码时还需要被编译为本地的CPU指令,这通常需要分配更多的内存也需要更多的时间,这会不会损伤系统的性能,影响代码的执行速度? 针对这一点,微软已经做了大量的工作,使额外的开销降到最低程度,而且在有些方面,托管代码有可能胜过非托管代码,比如说如果应用程序在一些新型的CPU上运行,JIT编译器能够检测到这种情况,并产生利用这些新型CPU提供的特殊指令的本地代码。而非托管应用
您可能关注的文档
- AutoCAD2013实用教程 教学课件 作者 郝坤孝吕安吉季阳萍 编著 第7章 三维绘图基础.ppt
- AutoCAD案例应用教程 教学课件 作者 何友义 第5章.ppt
- AutoCAD操作教程 教学课件 作者 2010中文版 教程1 3 第1章.ppt
- AutoCAD操作教程 教学课件 作者 2010中文版 教程1 3 第3章.ppt
- AutoCAD操作教程 教学课件 作者 2010中文版 教程4 12 第4章.ppt
- AutoCAD操作教程 教学课件 作者 2010中文版 教程4 12 第5章.ppt
- AutoCAD操作教程 教学课件 作者 2010中文版 教程4 12 第6章.ppt
- AutoCAD操作教程 教学课件 作者 2010中文版 教程4 12 第7章.ppt
- AutoCAD电气工程绘图教程 教学课件 作者 吴秀华 电力工程CAD1.ppt
- AutoCAD电气工程绘图教程 教学课件 作者 吴秀华 电力工程CAD2.ppt
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)