科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual C# 插件构架实战

Visual C# 插件构架实战

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了

作者:Jack H Hansen 来源:csdn 2007年11月13日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
二、设计过程

  好了,现在我们准备把所有的核心代码都放在 CSPluginKernel 命名空间中。用VSIDE建立一个C#类库工程。在命名空间 CSPluginKernel 中开始我们的代码。

  1. 接口设计

  我们的程序编辑器会向插件开放正在编辑的文档对象。程序启动后,就枚举每一个插件并把它连接到主程序,同时传递主程序对象的接口。插件可以通过这个接口来请求主程序对象或访问主程序功能 。

  根据上面的需求,我们首先需要一个主程序接口:

public interface IApplicationObject {
 void Alert( string msg ); // 产生一条信息
 void ShowInStatusBar( string msg ); // 将指定的信息显示在状态栏
 IDocumentObject QueryCurrentDocument(); // 获取当前使用的文档对象
 IDocumentObject[] QueryDocuments(); // 获取所有的文档对象
 // 设置事件处理器
 void SetDelegate( Delegates whichOne , EventHandler targer );
}

// 目前只需要这一个事件

public enum Delegates {
 Delegate_ActiveDocumentChanged ,
}

  然后是 IDocumentObject 接口。插件通过这个接口访问编辑器对象。

///
/// 编辑器对象必须实现这个接口
///

public interface IDocumentObject {
 // 这些属性是 RichTextBox 控件的相应的属性映射
 string SelectionText { get ; set ; }
 Color SelectionColor { get ; set ; }

 Font SelectionFont { get ; set ; }
 int SelectionStart { get ; set ; }
 int SelectionLength { get ; set ; }
 string SelectionRTF { get ; set ; }
 bool HasChanges { get ; }
 void Select( int start , int length );
 void AppendText( string str );
 void SaveFile( string fileName );
 void SaveFile();
 void OpenFile( string fileName );
 void CloseFile();
}

  这个接口不需要过多解释。这里我只实现了RichTextBox控件少数的几个方法,其他可能用得到的,读者自行添加即可。

  再然后,根据插件在其生命周期里的行为,设计插件的接口。

///
/// 本程序的插件必须实现这个接口
///

public interface IPlugin {
 ConnectionResult Connect( IApplicationObject app );
 void OnDestory();
 void OnLoad();
 void Run();
}

///
/// 表示插件与主程序连接的结果
///
public enum ConnectionResult {
 Connection_Success ,
 Connection_Failed
}

  主程序会首先调用 Connect() 方法,并传递 IApplicationObject 给插件。插件在这个过程中做一些初始化工作。然后,插件的 OnLoad() 方法被调用。在这之后,当主程序接收到调用插件的信号时(键盘、鼠标响应)就会调用插件的 Run() 方法来启动这个插件。程序结束时,调用其 OnDestory() 方法。这样,插件的生命才宣告结束。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章