反射是.NET的重要功能,它允许在运行时以编程方式查找和分析程序集元数据,从而实现了应用程序的动态处理。本书全面介绍了反射的概念及其相关应用技术,内容包括使用动态绑定的原因以及Reflection API支持它的方式;检测程序集类等元数据;自由加载程序集并创建对象和调用方法;利用反射修改对象数据;使用属性控制编译过程等,最后介绍如何使用反射创建可扩展的、可定制的、基于组件的应用程序。\r\n 本书适合熟悉Visual Basic .NET基本语法并具有编写Visual Basic .NET代码经验的中高级开发人员。
第1章 灵活的编程方法\r\n\r\n1.1 反射的定义\r\n1.2 类型术语\r\n1.3 绑定\r\n1.3.1 早期(静态)绑定\r\n1.3.2 运行时绑定\r\n1.3.3 面向对象\r\n1.3.4 后期绑定\r\n1.4 元数据\r\n1.5 访问.NET元数据\r\n1.6 .NET中的反射\r\n1.6.1 分析对象\r\n1.6.2 操纵对象\r\n1.6.3 创建对象\r\n1.7 小结\r\n\r\n第2章 程序集、对象和类型\r\n\r\n2.1 程序集元数据\r\n2.2 类型元数据\r\n2.2.1 检索类型\r\n2.2.2 Type类成员\r\n2.3 类成员元数据\r\n2.3.1 MemberInfo类\r\n2.3.2 FieldInfo类\r\n2.3.3 PropertyInfo类\r\n2.3.4 MethodBas类\r\n2.3.5 MethodInfo类\r\n2.3.6 ConstructorInfo类\r\n2.3.7 EventInfo类\r\n2.3.8 ParameterInfo类\r\n2.4 小结\r\n\r\n第3章 使用对象\r\n\r\n3.1 为什么要用反射调用成员\r\n3.2 动态调用成员\r\n3.2.1 利用Info类调用类成员\r\n3.2.2 用InvokeMember()方法调用类成员\r\n3.3 反射调用的代价\r\n3.4 小结\r\n\r\n第4章 创建对象\r\n\r\n4.1 动态程序集加载\r\n4.1.1 创建程序集引用\r\n4.1.2 动态加载程序集的方法\r\n4.1.3 动态实例化类\r\n4.2 抽象工厂模式\r\n4.3 小结\r\n\r\n第5章 属性\r\n\r\n5.1 了解属性\r\n5.1.1 使用属性的语法\r\n5.1.2 测试标准属性的数据类型\r\n5.2 使用预定义.NET属性\r\n5.2.1 属性类定义\r\n5.2.2 利用属性控制编译器\r\n5.2.3 定义并使用程序集属性\r\n5.3 定义新的自定义属性\r\n5.4 小结\r\n\r\n第6章 .NET组件模型\r\n\r\n6.1 .NET组件模型\r\n6.1.1 组件、控件和类\r\n6.1.2 利用组件模型使用反射\r\n6.2 创建新组件\r\n6.2.1 定义组件类\r\n6.2.2 在容器中存储组件\r\n6.2.3 在Visual Studio.NET中使用组件\r\n6.2.4 为组件定义属性和事件\r\n6.2.5 为组件定义转换器类\r\n6.2.6 测试Employee组件类\r\n6.3 小结\r\n\r\n附录A 支持、勘误表和代码下载\r\n\r\nA.1 如何下载本书的示例代码\r\nA.2 勘误表\r\nA.3 E-Mail支持\r\nA.4 p2p.wrox.com站点
.NET的优点之一是用元数据描述程序集的内容。但需要澄清的是:用元数据描述组件并不是.NET的构思(COM也使用元数据),但在COM/COM+中由于使用元数据而引起的许多问题(如元数据不能与组件同步等)均在.NET中得到了解决.
.NET还进一步开发了元数据的作用。它允许在运行时以编程方式搜寻、分析程序集元数据(我们把此过程称为发射)。不仅如此,当程序代码利用反射和元数据查找到它所感兴趣的类之后,还能够创建这些类的实例、激活它们的方法并操纵它们的成员.
想必您一定会对上述内容感兴趣,因为在运行时通过程序动态地改变所使用的类和方法的能力是一个强有力的工具。利用这样的工具,可以使程序更具灵活性和扩展性,同时也使程序更具可定制性。如果您希望创建一个允许用户插入自定义组件的应用程序,那么在编写。编译应用程序时,可能根本不知道这些组件要使用哪些类,如何编写这样的程序呢?利用反射可以解决这一问题,因为反射允许应用程序在运行时分析插件,并为自己找到答案.
如果您是一位VB.NET程序员,并对创建具有灵活性、扩展性,以及可定制性的程序感兴趣,想必您会迫切地希望了解反射。本书将介绍这方面的内容.
本书读者对象
VB.NET参考手册系列丛书的主要对象是需要学习更多知识以完成某一具体开发任务的Visual Basic .NET开发人员。本书假设您已经编写、编译、运行过VB.NET代码,并熟悉所使用的开发工具。本书将介绍何时以及如何利用.NET Reflection API来使自己创建的应用程序更具灵活性和可定制性。
本书主要内容
本书将详细介绍反射这一功能,其中包括介绍属于最佳选择或惟一选择的程序方案,如何有效、安全地使用Reflection API的类等。本书各章将介绍以下主要内容:
第1章 灵活的编程方法
本章通过介绍代码使用的对象绑定如何影响其灵活性来开始介绍反射特性。重点将介绍动态(运行时)绑定的优缺点,并将Reflection API作为实现绑定的机制。
第2章 程序集。对象和类型
从本章开始,将在VB.NET程序中使用API的类,以执行反射。本章介绍如何分析程序集的元数据,以使程序能够在运行时动态确定所需要的类的位置。
第3章 使用对象
本章介绍如何利用反射来使用所发现的类,因此本章不仅涉及到反射的被动用法(前面一章已经介绍),还介绍如何通过反射来动态地调用方法与修改类数据。
第4章 创建对象
本章介绍如何利用反射动态地加载程序集、实例化对象,同时还要介绍在应用程序中使用抽象工厂(Abstract Factory)设计模式的优点,并介绍如何将其与反射组合,以创建出动态加载核心模块的应用程序。
第5章 属性
属性允许您添加并控制与类相关联的元数据。本章将介绍基于属性的编程,介绍如何使用已有的属性、如何编写新属性,以及何时应该使用这些属性。
第6章 .NET组件模型
本章将综合利用前面各章节介绍的所有标准,介绍如何通过有效地利用命名空间System.ComponentModel中的反射、属性以及类来创建具有高度灵活性、高度可定制性以及高度可扩展性的通用应用程序。
本书还提供一个附录,该附录包含了本书支持以及程序代码下载方面的信息。有关Wrox出版社的更详细的介绍,请访问主页http://www.wrox.com/。