WinForm开发框架--动态读取DLL模式
来源:互联网 发布:servlet接收ajax json 编辑:程序博客网 时间:2024/05/29 17:34
之前的那个开发框架好几个朋友都用在了项目里面,也给我提出了很宝贵的意见,虽然最近一直没有什么更新,但是针对朋友们提出的建议,我都仔细考虑了一翻,很多的意见
我都融入了系统里面,将不足之处修改过来,本来想把报表的事儿给搞定,但是想了几种方案结果都不了了之。曾经有一个朋友说很欣赏我那个读取DLL文件的框架,以前我觉得写得挺乱的,代码也是比较混乱,有时候我自己翻出来居然要想很久才知道那些代码是什么意思,当时之所以舍弃了这套框架,是因为觉得整个项目的Size会越来越大,因为每一个窗体都是一个类库,然后编译为DLL文件,程序去读取并加载这些DLL文件,所以采取了直接写在竹程序里面的方式,详细介绍在这里:
http://www.cnblogs.com/allen0118/archive/2012/05/10/2494112.html
这样一来也有一个问题,主程序的EXE越来越大,我觉得理论上是这样,所以最近忙里偷闲,将原来的那套框架重新整理了一下,主要有以下几个变化:
1.每一个窗体皆为一个类库,实现相应的接口。
2.用户打开窗体的时候不是直接Open窗体,而是加载DLL文件,读取DLL文件里面的信息。
3.每一个窗体所实现的业务仍然在自己的类文件中完成。
在新建的项目里面实现如下业务:
using System; using System.Collections.Generic; using System.Text; using CP.Kernel.Base; namespace sysUserGroup { [Serializable] public class Plugins : IPugins { private FrmUserGroup f; public void Activate() { f.Activate(); } public void Dispose() { f.Close(); GC.Collect(); GC.SuppressFinalize(this); } public void Hide() { f.Close(); } public string Name { get { return "角色资料设定"; } } public string GUID { get { return "F2080504B6DC4963BC0963FEFA0E1AAD"; } } public string Version { get { return "1.0.0.0"; } } public string Manufacturer { get { return "制造商"; } } public string Description { get { return "用于设定角色资料"; } } public string TCode { get { return "JSZL"; } } public string FrmUrl { get { return "sysUserGroup.dll"; } } } }
这里入去传入进来的DLL文件:
public void LoadDLL(string DllName) { try { if (DllName.Substring(DllName.Length - 4).ToUpper() == ".DLL") { DllName = DllName.Replace(".dll", ""); } if (string.IsNullOrEmpty(DllName)) return; if (!allenSingleton.DicLoadDll.ContainsKey(DllName)) { IPugins objLoadDll; if (allenSingleton.DicPugins.ContainsKey(DllName)) { objLoadDll = allenSingleton.DicPugins[DllName]; } else { objLoadDll = CPUtility.LoadDll(DllName); } if (objLoadDll != null) objLoadDll.Show(dockPanel, DockState.Document); allenSingleton.DicLoadDll.Add(DllName, objLoadDll); } else { allenSingleton.DicLoadDll[DllName].Activate(); } } catch (Exception ex) { ShowMsg(ex.Message); } }
这个框架比起之前的那一套,数据处理方面没有什么变化,仍然采取存储过程实现业务逻辑,程序里面基本上面看不到SQL语句;布局和风格也是沿用以前的做法,仍然是多文档的布局模式,整体效果还是比较大方的,主要的变化就是核心部分,可以说现在的这套程序跟之前的那一套核心内容完全不一样了,在耦合性方面也有一些改善。加载的窗体如下图,都是DLL:
大致效果图:
- WinForm开发框架--动态读取DLL模式
- winform开发框架常见的分层模式
- C# WinForm开发框架
- winform开发框架
- Winform开发框架
- winform开发框架介绍
- C#Winform动态读取App.Config文件
- Winform开发框架之读卡器
- MyRapid Winform 快速开发框架
- Winform开发框架之框架演化
- DLL动态库开发一二
- Winform开发框架之权限管理系统
- Winform开发框架之字典数据管理
- Winform开发框架之系统登录实现
- Winform开发框架之通用人员信息管理
- Winform开发框架主界面设计展示
- Winform开发框架主界面设计展示
- Winform开发框架的重要特性总结
- C++程序设计-第15周 数据结构扩展与GUI开发体验
- <c:if>标签中的test可以比较两个el表达式中的值
- servlet中web.xml的配置
- 熬之滴水穿石:JAVA的世界(9)
- 读取容器配置参数-context-param 和init-param
- WinForm开发框架--动态读取DLL模式
- HashMap深度分析
- 一些有用的Android学习网站
- Android官网培训课:绘制形状
- String字符串
- 使用HashMap
- 程序集的加载过程
- 从儿童节的用“心”呵护看百度云的社会责任感
- 从面试中的总结