基于组件的.NET软件开发(3)

动态组件插拔

    在实现动态组件插拔之前,我们必须了解一个概念:反射(Reflection)。

    所谓反射,就是仅依据名字来创建一个对象

    举个例子,在上面的例子中,我可以直接给定一个字串:“ CSharpClassNameSpace.CSharpRect”,然后我就可以生成这个对象,并调用它的Area()方法求面积!其前提条件是程序能访问存放这些类的DLL文件。

    好了,现在可以说说我们的构想了:

    我们把某个程序要用到的DLL和其中的类名放在一个配置文件中,程序启动时读取这个文件,就可以自动地加载外部指定的DLL,实现程序的组件动态装配。当我需要更换程序中的某个组件时,我只需要将新DLL复制到程序文件夹之下,系统就马上可以使用新的组件,而不用重新编译或修改组件调用者原有的任何代码!

    现在看看我们的示例是怎么样的!

    我们创建两个VB类库,每个类库都封装了一个窗体。VBDynamicComponent组件中封装了以下窗体:


6 组件一

VBDynamicComponent2组件中封装了以下窗体:


7 组件二

    主程序是一个Windows应用程序,它可以动态创建两个组件中的任何一个窗体对象,并显示它们:


8 示例程序主窗体

主程序在启动时会读取一个系统配置清单,是XML格式的,如下所示:

 <?xml version="1.0" encoding="GB2312" ?>

  <Config>

     <Component ComponentName=" DynamicComponent.VBForm1"   ComponentFileName="DynamicComponent.dll" />

     <Component ComponentName="VBDynamicComponent2.VBForm2" ComponentFileName="VBDynamicComponent2.dll" />

  </Config>

 
 

    主程序根据清单装入指定的组件DLL文件,并依据ComponentName属性值创建对象,排列在第一位的组件窗体被自动显示。

    大家看一看,这样一个系统组件装配清单,象不象一个厨师准备大餐时的原料清单?现在就开始制作我们的“满汉全席吧!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值