`
wodamazi
  • 浏览: 1419614 次
文章分类
社区版块
存档分类
最新评论

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

阅读更多

动态组件插拔

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

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

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

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

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

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

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

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>


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属性值创建对象,排列在第一位的组件窗体被自动显示。

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

分享到:
评论

相关推荐

    基于.NET技术的管理软件快速开发平台

    极致业务基础平台(Jeez Business Framework,简称为JBF)基于Microsoft .NET开发技术和模型驱动架构,是面向业务应用的管理软件开发平台。极致业务基础平台不仅能够快速地开发应用软件,而且能够根据的用户需求快速...

    基于组件的软件开发_VB.NET&C#

    介绍.NET组件编程技术,包括自定义控件、混合语言开发与动态组件插拔

    基于XPO的.NET软件开发

    大名顶顶的XPO,一些基础知识的介绍..可以去官网下载组件

    Grove[.net开发组件包]

    Grove Develop Component结合可复用面向对象软件开发原理(泛指设计模式),注重提高软件开发中的代码重用率,并使软件开发架构清晰,有利于加快软件开发速度,减低软件维护成本. Grove Tool Kit 是针对Grove Develop ...

    Grove[.NET组件开发包]

    Grove Develop Component结合可复用面向对象软件开发原理(泛指设计模式),注重提高软件开发中的代码重用率,并使软件开发架构清晰,有利于加快软件开发速度,减低软件维护成本. Grove Tool Kit 是针对Grove Develop ...

    基于.NET的通用查询组件的开发

    在分析主要开发技术的基础上,介绍了如何在.NET平台下用C#语言开发一个实用的通用查询组件,详细叙述了该查询组件的设计方法、功能实现的部分程序代码.在实际数据库的应用系统中,各子系统在调用该组件时只要设置相应...

    ArcObjects GIS应用开发——基于C#.NET

    《基于ArcObjects与C#.NET的GIS应用开发》在广泛...《基于ArcObjects与C#.NET的GIS应用开发》可作为高等院校地理信息系统、测绘等专业的本科生和研究生的教材,也可供从事地理信息系统开发和相关软件开发人员阅读参考。

    基于asp.NET的小区物业管理系统文档.doc

    利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,应用Active Server Page技术和采用Access数据库系统组件来构成考试的应用服务系统,开发了基于B/S模式多用户小区物业系统程序。...

    基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    1、基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2、采用MVC的框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程化管理等优点 3、采用WebAPI,客户端完全摆脱了...

    .net快速开发平台整体解决方案

    极致管理软件开发平台基于Microsoft .Net开发技术和模型驱动的技术架构,是面向业务应用的管理软件开发平台。极致管理软件开发平台提供数据实体定义工具、界面设计工具、系统发布工具和运行时框架组件,帮助软件开发...

    .NET敏捷开发框架-RDIFramework.NET V5.1全新测试版本

    应用系统建立在此框架之上,采用构件式、可复用开发,节省开发成本,加快开发速度,在软件开发上更好的做到多快省。 适合低中高任意开发水平的开发者,可以开发OA、ERP、BPM、CRM、WMS、TMS、MIS、BI、电商平台后台、...

    rdiframework.net 敏捷开发框架 V5.1打包文档资料

    应用系统建立在此框架之上,采用构件式、可复用开发,节省开发成本,加快开发速度,在软件开发上更好的做到多快省。 适合低中高任意开发水平的开发者,可以开发OA、ERP、BPM、CRM、WMS、TMS、MIS、BI、电商平台后台、...

    基于.NET Framework 4.5的一款桌面版录音软件

    基于Visual Studio 2017 WPF开发的一款桌面版录音软件,框架.NET Framework 4.5

    ASP.NET WebAPI+mvc4.0+EasyUI快速开发框架+通用权限管理系统源码

    1、基于ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout的架构设计开发 2、采用MVC的框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程化管理等优点 3、采用WebAPI,客户端完全摆脱了代理...

    Visual C#基于组件的开发

    本书内容提挈: ...本书讲述了基于组件的开发技术、实用的建议和真实的示例,可以帮助您在.NET环境下提高设计、调试和部署应用程序的效率,并能有效地消除错误,非常适合于使用Visual C#的中高级程序员阅读。

    基于ASP.NET的办公自动化系统的设计与实现

    论文首先介绍了面向对象技术的软件工程开发方法和ASP.NET组件对象模型。在此基础上,结合对湖南省卫生厅综合信息办公系统进行了需求分析,建立了对象、动态和功能模型。论文着重研究了如何采用ASP.NET技术进行系统...

    Visual C#基于组件的开发(源码)

    Visual C#基于组件的开发"的图书目录…… 第一部分 概论 第一章 开发过程 第二章 组件结构 第三章 组件设计 第四章 组件分类 第五章 调试 第六章 部署 第二部分 前端组件 第七章 WINDOWS窗体组件 第八章 ...

    基于ASP.NET在线考试系统设计

    Microsoft Access2000是微软公司开发的基于Windows平台的小型数据库管理系统,是Office 2000 的组件之一。它承袭了旧版本Access的各项优点,又新增或完善了数据访问页、个性化菜单、internet/intranet、编程、安全...

    基于Asp.net Core 3.1开发的权限管理系统.zip

    使用Asp.net Core WebApi,Jwt,Swagger2,AutoFac,SqlSugar,AutoMapper,DotLiquid,Nlog,Redis等组件及技术实现。 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常...

    VB.NET数据库开发教程(pdg)

    应技术,内容涉及Visual Basic.NET的基本语法、SQL结构化查询语言以及基于.NET平台的数据库开发 技术。重点介绍了ADo.NET及其主要组件,包括连接对象、命令对象、数据阅读器、数据适配器、数 据集等,并通过实例...

Global site tag (gtag.js) - Google Analytics