上一篇博文实现了我的程序的自动升级,这篇来介绍我的程序的扩展部分--插件结构
园子里有很多关于插件架构的文章,有大的整个框架也有小的功能代码,每每阅读都有不少收获!
现在就来实现我的插件架构,部分内容参考学习自其它地方,在此表示感谢。
我要实现的是给Winform程序添加扩展接口,详细的就不多说了,直接按照我自己的理解来贴代码。
一,宿主程序提供公开接口供插件程序调用:
插件要如何与宿主程序通讯或使用宿主程序资源呢???
首先插件程序不可能添加对宿主程序的引用,所以首先实现一个IApplication接口,宿主程序继承自IApplication接口
IApplication接口描述宿主程序要提供给插件程序的资源(这里所说的资源应为宿主程序愿意公开的一些东西)
public interface IApplication
{
/// <summary>
/// 插件工具栏
/// </summary>
ToolStrip PluginTools{get;set;}
/// <summary>
/// 在宿主程序添加插件工具栏
/// </summary>
void CreatePluginTools();
/// <summary>
/// 插入插件工具
/// </summary>
/// <param name="plugin"></param>
void InsertPluginTool(IPlugin plugin);
}
{
/// <summary>
/// 插件工具栏
/// </summary>
ToolStrip PluginTools{get;set;}
/// <summary>
/// 在宿主程序添加插件工具栏
/// </summary>
void CreatePluginTools();
/// <summary>
/// 插入插件工具
/// </summary>
/// <param name="plugin"></param>
void InsertPluginTool(IPlugin plugin);
}