昨天晚上花了一晚上时间写了一个从程序集中动态加载窗体的程序.将任何包含窗体的代码编译成 dll 文件,再把 dll 文件拷贝到本程序的目录下,本程序运行时即可动态检查到 dll 文件中的窗体,将窗体类的类型在程序菜单中显示出来,点击菜单即可运行对应的窗体.

  本程序主要用到了 Assembly 类动态加载程序集,再得到程序集中包含类的 Type 类型,动态生成类实例,动态调用类方法.个人觉得这是一种提供高度松耦合,可随意扩展的程序结构框架,希望和大家探讨一下这种框架的应用前景!

  关键性代码如下:

从 dll 程序集中动态加载窗体 [原创]using System;
从 dll 程序集中动态加载窗体 [原创]
using System.Drawing;
从 dll 程序集中动态加载窗体 [原创]
using System.IO;
从 dll 程序集中动态加载窗体 [原创]
using System.Reflection;
从 dll 程序集中动态加载窗体 [原创]
using System.Collections;
从 dll 程序集中动态加载窗体 [原创]
using System.ComponentModel;
从 dll 程序集中动态加载窗体 [原创]
using System.Windows.Forms;
从 dll 程序集中动态加载窗体 [原创]
using System.Data;
从 dll 程序集中动态加载窗体 [原创]
从 dll 程序集中动态加载窗体 [原创]
namespace WindowsFormTest

程序源码下载:/Files/Infinity/WindowsForm.rar
  
  程序截图:

单个 dll 文件包含一个窗体时:
从 dll 程序集中动态加载窗体 [原创]
当程序目录下的所有程序集中包含一个窗体类时,程序运行界面:
从 dll 程序集中动态加载窗体 [原创]

多个 dll 文件包含多个窗体时:
从 dll 程序集中动态加载窗体 [原创]
当程序目录下的所有程序集中包含多个窗体类时,程序运行界面:
从 dll 程序集中动态加载窗体 [原创]


  欢迎大家提出意见,共同探讨!

相关文章: