MongoDB管理工具的插件系统2014-04-14 cnblogs magicDictMongoDB管理工具 MongoCola的开发已经进入第三个年头了。官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强 大了。最近准备着手插件系统的开发,简单的插件系统,其实代码量非常的少。1.插件基类插件系统需要一个插件基类的支持,这个基类,规定了一个插件所包含的固有字段,例如插件名称 ,插件说明,插件作者等等。同时,还定义了主方法的名称,毕竟插件系统肯定要使用反射来完成,所以很多东西必须要统一起 来。
using System;namespace MagicMongoDBTool.Common{public abstract class PlugBase{/// <summary>/// 路径阶层[考虑到以后可能阶层会变换]/// </summary>public enum PathLv : int{/// <summary>/// 连接/服务器/// </summary>ConnectionLV = 0,/// <summary>/// 具体的实例/// </summary>InstanceLV = 1,/// <summary>/// 数据库/// </summary>DatabaseLV = 2,/// <summary>/// 数据集/// </summary>CollectionLV = 3,/// <summary>/// 数据文档/// </summary>DocumentLV = 4,/// <summary>/// 杂项/// </summary>Misc = 9}/// <summary>/// 插件菜单表示名称/// </summary>public string PlugName = String.Empty;/// <summary>/// 插件功能简述/// </summary>public string PlugFunction = String.Empty;/// <summary>/// 处理对象/// </summary>public dynamic PlugObj;/// <summary>/// 对象层次/// </summary>public PathLv RunLv = PathLv.ConnectionLV;/// <summary>/// 运行/// </summary>/// <returns></returns>public abstract int Run(); }}
Run是个抽象方法,既然是抽象方法,继承这个类的插件都必须实现这个方法。Run也是以后工具调 用插件功能的入口函数。这个基类,可以以源代码的形式添加到插件的工程里面,当然,也可以做成一个DLL,让插件的工程 引用。我现在讲它做成了DLL。