如何通过反射实现动态功能模块加载

原文: 如何通过反射实现动态功能模块加载

  程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

  下面我们将介绍如何通过不使用反射的方式和使用反射的方式加载功能模块。实现效果:

 

1.        WinForm 主程序

主程序我们使用Winform程序,VS2008 工具C#语言开发。包括工具栏、状态栏及TabControl控件。我们使用TabControl 作为功能模块容器,装载各个功能模块。实现效果如下:

 

2.        不使用反射方式加载功能

新增信息资料功能模块项目,项目增加资料管理(UCCustomerInfo)用户控件。资料管理显示、加载、导入、导出资料功能。

 

2.1.       WinForm 主程序调用

WinForm 添加资料管理项目引用。点击信息资料时,实例资料管理功能模块进行加载。

 

3.        使用反射方式加载功能

使用反射方式加载功能,需要定义功能模块接口、设计配置功能模块、主程序读取配置文件动态加载功能模块。

3.1.       定义功能模块接口

功能模块接口(UCModule)定义为用户控件(UserControl),虚拟两方法,供具体功能模块进行重写。

 

3.2.       实现功能模块实例

功能模块还是前信息资料管理功能,但不是继承用户控件(UserControl),而是继承功能模块接口(UCModule)。

 

3.3.       设计功能模块配置

功能模块配置采用Xml文件定义,定义为:模块编号、模块名称、模块项目、模块对象。

 

3.4.       通过配置动态功能模块

读取功能模块配置,返回系统定义的功能模块列表。增加工具栏按钮,点击工具栏按钮时,加载配置的功能模块项目。

 

 

至此,如何通过反射动态加载功能模块已讲解完毕。从两示例实现的方式,我们可明显看出,采用动态加载的方式,比直接使用的方式还是要复杂得多,所以小型项目、团队成员不多的情况下,还是建议不使用反射比较好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值