昨天写出了个基于Assembly的插件式结构模型,整体上有三个部分组成:
1)插件协议(IPlugin)
定义了作为插件必须实现的几个方法(见下面的代码),并通过这个接口来判断;另外包含了对插件的一些基本操作,定义在pluginUtil类中
using System;
using System.Data;
using System.Windows.Forms;
namespace PluginProtocol
{
/// <summary>
/// 插件服务接口
/// </summary>
public interface IPlugin
{
//创建主画面
System.Windows.Forms.Control CreateMainForm(DataSet dsPersonInfo, Form formOrder, object[] args);
//获取版本号
string GetVersion();
//获取关于信息
string GetAboutInfo();
//获取插件名称
string GetPluginName();
}
}
2)各种插件
和一般的类库开发没什么不同,只是增加了一个基于IPlugin的类,实现一些必须实现的接口,需要注意的是,CreateMainForm方法是接口的入口
3)主程序
要调用接口非常简单,只要两句话:
PluginProtocol.IPlugin p = PluginProtocol.PluginUtil.GetPluginObject(