插件架构学习体会(二) -- 插件程序说:要求平等对话
2009-01-05 09:51
351 查看
在上一篇中我们知道,宿主程序对插件程序定义了一个规约,以此达到和插件程序通讯的目的。那插件有些不平衡,有时候我也需要知道你宿主程序的一些信息来完成我的工作,因此,我必须和你通讯,要有对话的权利。实际上,插件一般都会或多或少的用到宿主程序的上下文,比如vs插件,需要获取vs环境中的编辑的代码对象,才能完成它的工作比如格式化啊统计啊,再比如播放器的歌词插件,至少要获取播放器正在播放的是哪首歌吧。那么我们如何来实现这个通讯呢?我们知道宿主通过一个接口来操作插件,那么同理,插件可以通过一个接口来操作宿主。首先,我们要明确宿主要提供什么属性和方法可供插件们操作,可以提取出一个接口来规约这些行为,那么这个接口就是插件获取宿主context的桥梁。只要插件持有这个接口的引用,实例化时把宿主程序的引用赋上,那么插件便有了对话的权利。稍微改一下上次的代码,如下:
加上一个宿主必须实现的契约:
public interface IAppContext
2 {
3
1 //实现了contract里约定的方法,控制台上输出宿主程序的属性TextOut字符串
2 public void PrintToConsole()
3 {
4 Console.WriteLine(m_App.TextToPrint);
5 }
结果如下:
代码下载:http://files.cnblogs.com/Pcant/simplePlun-in2.rar
加上一个宿主必须实现的契约:
public interface IAppContext
2 {
3
1 //实现了contract里约定的方法,控制台上输出宿主程序的属性TextOut字符串
2 public void PrintToConsole()
3 {
4 Console.WriteLine(m_App.TextToPrint);
5 }
结果如下:
代码下载:http://files.cnblogs.com/Pcant/simplePlun-in2.rar
相关文章推荐
- 插件架构学习体会(一) -- 宿主程序说:插件你得听我的
- 插件架构学习体会(三)--插件:兄弟们要团结
- YouTube架构学习体会
- 黑马程序员之C#编程基础学习笔记:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。
- Cordova 7 架构学习 良好程序结构要点
- 学习调用程序,按要求输出星号图【二】
- 在C#程序中实现插件架构
- 在C#程序中实现插件架构
- PHP带头大哥谈程序语言的学习体会!
- 在C#程序中实现插件架构 - Sunmast翻译
- 一步一步跟我学习hadoop(2)----hadoop eclipse插件安装和运行wordcount程序
- 在C#程序中实现插件架构
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommentEdit
- 在C#程序中实现插件架构
- Delphi/BCB 开发插件架构程序(连载一)
- YouTube架构学习体会
- 程序语言的学习体会
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommentAdd 添加评论的功能实现
- Popush系统架构学习体会(0)—Node.js+Socket.io+Backbone.js
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommentAdd