以下例子实现界面和数据操作的分离,界面成为一个dll,数据操作部分成为一个dll。
先上一个框图:
从上面的框图可以看出整体上需要:三个接口
下面是代码:
(1)建立第一个项目(以便形成dll),名称为:PluginKernel,此项目里面只需定义三个接口,为了层次分明,这三个接口分在两个.cs文件中。
先在IControl.cs(或IApp)文件中定义两个接口:
namespace CSPluginKernel
{
public interface IApplicationObject //应用程序主界面接口
{
void SetDelegate( EventHandler target ); //传递一个委托,即函数指针作为形参,这个委托会保存在主界面对象的appEvent成员中
IDocumentObject GetActivatedDocuments(); // 获取当前使用的文档对象
}
public interface IDocumentObject //文档对象(文本框)接口
{
string SetText { get; set; }
Color SelectionColor { get; set; }
Font SelectionFont { get; set; }
}
}
然后IPlugin.cs文件中定义一个插件接口:
namespace CSPluginKernel {
public interface IPlugin
{
ConnectionResult Connect( IApplicationObject app ); //插件注册函数
void OnDestory();
void OnLoad(); //插件加载
void Run(); //运行插件
}
}
(2)建立第二个项目,名称为:MyPlugin1,此项目就包含一个具体插件类。
建立MyPlugin1.cs文件,在此文件中添加如下代码:
namespace MyPlugin1
{
public class MyPlugin1 : IPlugin