第11章使用类型元数据.ppt

上传人:本田雅阁 文档编号:3123106 上传时间:2019-07-13 格式:PPT 页数:36 大小:1.05MB
返回 下载 相关 举报
第11章使用类型元数据.ppt_第1页
第1页 / 共36页
第11章使用类型元数据.ppt_第2页
第2页 / 共36页
第11章使用类型元数据.ppt_第3页
第3页 / 共36页
第11章使用类型元数据.ppt_第4页
第4页 / 共36页
第11章使用类型元数据.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第11章使用类型元数据.ppt》由会员分享,可在线阅读,更多相关《第11章使用类型元数据.ppt(36页珍藏版)》请在三一文库上搜索。

1、第11章 使用类型元数据,.NET Framework 2.0 程序设计,第 1 章: .NET Framework 2.0简介 第 2 章:公共语言运行库和类型 第 3 章:托管代码的编译和执行 第 4 章:委托和事件 第 5 章:读取和写入文件 第 6 章:集合和泛型 第 7 章:数据的序列化 第 8 章:GDI+ 第 9 章:在 .NET Framework 2.0中实现加密,第 10 章: COM 组件与.NET Framework程序集之间的交互操作 第 11 章:使用类型元数据 第 12 章:创建多线程应用程序和应用程序域 第 13 章:代码访问安全性 第 14 章:监视和调试应用

2、程序 第 15 章:使用服务应用程序和电子邮件消息 第 16 章:创建全球化应用程序 第 17 章:配置和安装程序集,本章学习目标: 通过Assembly、MemberInfo、MethodBody 和LocalVariableInfo类型和程序集属性使用类型元数据 通过生成器类和绑定类型动态地使用程序集,目标,通过预定义的 Assembly 类使用类型元数据 通过自定义类动态使用程序集 小结 实验 习题,第11章 使用类型元数据,反射 使用 Assembly 类访问类型元数据 使用MemberInfo类研究类型元数据 (1)Type类及其子类 (2) MethodBase类 (3) Even

3、tInfo类 (4) FieldInfo类 (5) PropertyInfo类 使用MethodBody类检查方法的内容 使用程序集属性向元数据添加自定义信息,.,通过预定义的 Assembly 类使用类型元数据,11.1 通过预定义的 Assembly 类使用类型元数据,反射,11.1.1 反射,反射是在运行时检查程序集清单中的元数据的功能。,程序集的元数据提供程序集和程序集中所有类型(包括泛型类型)的相关信息。,程序集由模块组成,模块由类型组成,而类型包含成员。,.NET Framework 提供了System.Type类并在System.Reflection命名空间中提供了很多类,这些类

4、可用于执行反射。,使用 Assembly 类访问 类型元数据,11.1.2 使用 Assembly 类访问类型元数据,Assembly 类的静态方法:,使用 Assembly 类来访问 类型元数据 (续),11.1.2 使用 Assembly 类来访问类型元数据,代码示例C#,代码示例VB,续表:,使用MemberInfo类 研究类型元数据,11.1.3 使用MemberInfo类 研究类型元数据,MemberInfo类的成员:,使用MemberInfo类 研究类型元数据(续),11.1.3 使用MemberInfo类 研究类型元数据,续表:,Type类及其子类 MethodBase类 Eve

5、ntInfo类 FieldInfo类 PropertyInfo类,.,.NET Framework 提供了几个类,可以使用它们来访问元数据成员的信息 。,使用MemberInfo类 研究类型元数据 (续),11.1.3 使用MemberInfo类 研究类型元数据,.,使用MemberInfo类研究类型元数据(续),Type类具有以下子类:,11.1.3 使用MemberInfo类研究类型元数据,EnumBuilder:描述并表示一个枚举。 GenericTypeParameterBuilder:定义和创建动态定义的泛型类型的泛型参数。 TypeBuilder:在运行时定义并创建类的新实例。 T

6、ypeDelegator:包装一个类型对象并将所有方法委托给类型。,代码示例C,代码示例VB,11.1.3 使用MemberInfo类 研究类型元数据,MethodBase 类的成员:,代码示例C,代码示例VB,使用MemberInfo类研究类型元数据(续),11.1.3 使用MemberInfo类 研究类型元数据,EventInfo类的成员:,代码示例C,代码示例VB,使用MemberInfo类研究类型元数据(续),11.1.3 使用MemberInfo类 研究类型元数据,FieldInfo类的成员:,代码示例C,代码示例VB,使用MemberInfo类研究类型元数据(续),11.1.3 使

7、用MemberInfo类 研究类型元数据,PropertyInfo类的成员:,代码示例C,代码示例VB,使用MemberInfo类研究类型元数据(续),使用MethodBody类 检查方法的内容,11.1.4 使用MethodBody类检查方法的内容,MethodBody类的成员:,代码示例C,代码示例VB,使用MethodBody类 检查方法的内容,11.1.4 使用MethodBody类检查方法的内容,LocalVariableInfo类的成员:,代码示例C,代码示例VB,使用程序集属性向元数据添加自定义信息,11.1.5 使用程序集属性向 元数据添加自定义信息,程序集是自我描述的,可使用

8、程序集属性添加详细的信息。,在Visual Studio项目中,可在AssemblyInfo文件中添加程序集属性。 在VB.NET项目中,AssemblyInfo文件位于解决方案资源管理器中的My Project文件夹中。 在C#项目中,AssemblyInfo文件位于解决方案资源管理器的Properties文件夹中。,通过预定义的 Assembly 类使用类型元数据 通过自定义类动态使用程序集 小结 实验 习题,第11章 使用类型元数据,使用生成器类动态创建程序集 绑定 使用绑定类型控制成员绑定,.,通过自定义类动态 使用程序集,11.2 通过自定义类动态使用程序集,.NET Framewo

9、rk 提供了可用于在运行时动态创建程序集的自定义类。,各种生成器类的作用。,使用生成器类动态 创建程序集,11.2.1 使用生成器类动态创建程序集,代码示例C,代码示例VB,使用生成器类动态 创建程序集 (续),11.2.1 使用生成器类动态创建程序集,续表:,使用生成器类动态 创建程序集 (续),11.2.1 使用生成器类动态创建程序集,续表:,绑定是寻找与指定类型(此类型必须唯一)相对应的实现的过程。有两种绑定类型:早期绑定和晚期绑定。,绑定,11.2.2 绑定,早期绑定对象允许编译器在应用程序执行前分配内存和执行其他优化。 晚期绑定发生在直至运行时才将变量设置为特定类型的情况。,使用绑定

10、类型 控制成员绑定,11.2.3 使用绑定类型控制成员绑定,当在运行时动态加载类和使用晚期绑定时,必须使用绑定标志来控制绑定对象的过程。使用 BindingFlags 枚举可以实现这一点。 要在运行时动态加载类型,必须首先加载程序集。可以使用 System.Activator.CreateInstance 方法来创建动态加载类型的实例。,代码示例c,通过预定义的 Assembly 类使用类型元数据 通过自定义类动态使用程序集 小结 实验 习题,第11章 使用类型元数据,11.3 小结,本章主要介绍了如何在.NET Framework中使用类型元数据。要使用类型元数据,就需要用到反射。反射是.N

11、ET Framework中的重点之一,IDE的很多功能都是通过反射来实现的。使用反射技术,可以在代码中编写代码,动态创建和使用程序集。,小结,通过预定义的 Assembly 类使用类型元数据 通过自定义类动态使用程序集 小结 实验 习题,第11章 使用类型元数据,实验,11.4 实验,参照实验手册,并在教师指导下完成实验报告。,通过预定义的 Assembly 类使用类型元数据 通过自定义类动态使用程序集 小结 实验 习题,第11章 使用类型元数据,习题,11.5 习题,1. 你在开发一个执行代码分析和生成报告的应用程序,而且打算向软件开发项目经理销售该应用程序。默认情况下,该应用程序加载一个完

12、整的程序集来生成分析报告。但是,为了适合于具有数百个项目的超大型开发团队,你必须包含一个允许项目经理通过输入类名来查找程序集的功能。以下哪个方法可用于完成此任务? 请选择一个最佳答案。 AAssembly.ReflectionOnlyLoad BAssembly.LoadFrom CAssembly.LoadModule DAssembly.GetAssembly,习题(续),2. 如果需要为具有强名称的程序集签名,以使你可以将此程序集安装到全局程序集缓存中,那么要将以下哪个属性应用于该程序集? 请选择一个最佳答案。 AAssemblyKeyFileAttribute BDelaySignAt

13、tribute CAssemblyConfigurationAttribute DAssemblyFlagsAttribute,11.5 习题,习题(续),3. 如果要为 Visual Studio 2005 创建一个扩充程序,该扩充程序将增强 IntelliSense 报告的详细信息级别,那么可以使用以下哪个方法来枚举和报告开发人员所使用的类的每个函数成员? 请选择一个最佳答案。 AType.GetMethod BType.GetMethods CModule.GetMethod DModule.GetMethods,11.5 习题,习题(续),4. 你希望允许别的开发人员创建他们的组件,而

14、你的应用程序应用这些组件。这些组件必须在不中断应用程序执行的情况下加载到你的应用程序中。以下哪个语句可用于完成此任务? 请选择一个最佳答案。 AmyAssemblyBuilder=AssemblyBuilder.HostContext() BmyAssemblyBuilder=AssemblyBuilder.CreateInstance() CmyAssemblyBuilder=Assembly.GetAssembly D myAssemblyBuilder=Thread.GetDomain.DefineDynamicAssembly,11.5 习题,习题(续),5. 你已创建一个应用程序控制模块,此模块必须动态地加载由开发人员创建的组件。项目经理和管理员已创建了此控制模块的设计要求。你已被要求提供一个报告来支持在此控制模块中实现晚期绑定的决定。以下哪些理由可用于支持你的决定? 请选择所有符合条件的答案。 A. 晚期绑定是最有效的绑定类型 B. 可以使用标志来控制如何绑定对象 C. 可以将此绑定类型与动态加载类型结合使用 D. 此绑定类型允许你使用Visual Studio中的IntelliSense,11.5 习题,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1