的类似信息,如模块的程序集以及模块中的类等:③ 使用 CoustructorInfo 了解如下的类似
信息,如构造函数的名称、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abst
ract 或 virtua1)等;④ 使用 MethodInfo 来了解如下的类似信息,如方法的名称、返回类型、
参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtua1)等;⑤ 使用
FieldInfo 来了解如下的类似信息,如字段的名称、访问修饰符(如 public 或 private)和实现
详细信息(如 static)等,并获取或设置字段值;⑥ 使用 EventInfo 来了解如下的类似信息,
如事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,并添加或移
除事件处理程序:⑦ 使用 PropertyInfo 来了解如下的类似信息,如属性的名称、数据类型、
声明类型、反射类型和只读或可写状态等,并获取或设置属性值;⑧ 使用 ParameterInfo
来了解如下的类似信息,如参数的名称、数据类型、参数是输入参数还是输出参数,以及参
数在方法签名中的位置等。
3.总体设计思路
插件是一种遵循一定规范的应用程序接口编写出来的程序模块。当应用程序已经部署,
但业务发生了变化,这样可以通过读取插件配置信息,载入新的应用构件,实现变化的业务。
对于应用系统的框架而言,扩展点是框架中预先定义的一些“点”。 在框架复用中应用
构件的组装需要基于扩展点进行。构造性和演化性是软件的两个本质特征,作为一类重要的
可复用软件制品。而基于扩展点可以组装不同的应用构件以适应领域的变化性。则体现了框
架对于软件演化特征的支持[3]。
本文涉及到几个概念,插件配置定义,接口定义,方法定义和调用参数定义和返回参
数定义。在本插件平台中,配置文件描述插件配置定义,接口定义,方法定义。对于调用参
数定义和返回参数定义则采用通用对象和动态对象组[4]来实现传入和返回参数。
插件平台的实现过程如图 1
所示。当平台运行初始化时,通过读取 XML 配置信息,
装载 DLL,通 过 C#的反射机制分析 DLL 里的全部实现类和方法。外部构件可以在平台容器
中被实例化,并执行插件点的方法。实现的算法不再是编码硬绑定。