预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共30页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

采用C#反射机制和动态参数实现可插件业务平台 关键字:HYPERLINK"http://tech.ddvip.com/search.php?key="\t"_blank"HYPERLINK"http://tech.ddvip.com/search.php?key=NetBIOS"\t"_blank"NetBIOSHYPERLINK"http://tech.ddvip.com/search.php?key=向导程序"\t"_blank"向导程序HYPERLINK"http://tech.ddvip.com/search.php?key=ActiveX"\t"_blank"ActiveXHYPERLINK"http://tech.ddvip.com/search.php?key=DataReader"\t"_blank"DataReaderHYPERLINK"http://tech.ddvip.com/search.php?key=Lambda表达式"\t"_blank"Lambda表达式 本文讨论生成后的应用系统与外部编译的业务库实现动态绑定,应用程序在运行过程中动态绑定要实现的外部业务,当业务发生变化,也只是替换这些外部的动态库,不用重新对应用程序进行修改和编译,实现了耦合绑定。 1引言 在信息系统开发,用户业务功能变化预先不可知,故要提高系统后期的业务扩展。一般情况下用户需求发生变化,要重新编写代码,编译,生产部署包,然后再更新用户程序。这样的过程比较繁琐。 本文讨论生成后的应用系统与外部编译的业务库实现动态绑定,应用程序在运行过程中动态绑定要实现的外部业务,当业务发生变化,也只是替换这些外部的动态库,不用重新对应用程序进行修改和编译,实现了耦合绑定。同时,业务实例对象可以在程序运行时实现实例化,达到了封装效果。并且降低了调用代码和具体实现类代码的耦合,增强灵活性和可复用性,增加了软件的可维护性。 C#提供的反射机制,再结合自适应数据参数的传递,通过这个技术,我们可以将应用框架中的扩展点以插件式程序集的方式来动态加载、构建,从而实现可动态扩展的应用程序。 2反射机制的基础知识 反射[1][2]是.NET中重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。.NET的应用程序结构分为应用程序域、程序集、模块、类型和成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。 反射通常具有以下用途:①使用Assembly定义和加载程序集,加载在程序集清单中列出的模块,以及从此程序集中查找类型并创建该类型的实例;②使用Module了解如下的类似信息,如模块的程序集以及模块中的类等:③使用CoustructorInfo了解如下的类似信息,如构造函数的名称、参数、访问修饰符(如public或private)和实现详细信息(如abstract或virtua1)等;④使用MethodInfo来了解如下的类似信息,如方法的名称、返回类型、参数、访问修饰符(如public或private)和实现详细信息(如abstract或virtua1)等;⑤使用FieldInfo来了解如下的类似信息,如字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值;⑥使用EventInfo来了解如下的类似信息,如事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,并添加或移除事件处理程序:⑦使用PropertyInfo来了解如下的类似信息,如属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,并获取或设置属性值;⑧使用ParameterInfo来了解如下的类似信息,如参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。 3.总体设计思路 插件是一种遵循一定规范的应用程序接口编写出来的程序模块。当应用程序已经部署,但业务发生了变化,这样可以通过读取插件配置信息,载入新的应用构件,实现变化的业务。 对于应用系统的框架而言,扩展点是框架中预先定义的一些“点”。在框架复用中应用构件的组装需要基于扩展点进行。构造性和演化性是软件的两个本质特征,作为一类重要的可复用软件制品。而基于扩展点可以组装不同的应用构件以适应领域的