过年上班第一天,首先给大伙拜个晚年。接着说,插件和宿主程序之间的相互通讯都不是什么问题了,那插件之间的相互通讯呢?理论上来说,插件之间的相互通讯是比较少见的,因为他们之间的通讯势必造成插件之间的依赖关系,那么对加载顺序也就有了严格的要求,我们应该尽量避免这种依赖。话说回来,如果需要插件间通讯,我们该如何做,不难想到,既然插件和宿主可以相互通讯,那我们只要让宿主做插件的中间人,就可以把两个插件联系在一起,毕竟宿主可以持有插件的引用。按照这个思路,继续修改程序:
    首先我们得让宿主程序保存已加载插件的引用,并能获取制定的插件引用,修改一下IAppContext接口,添加以下内容
Code
    接下来要在宿主中实现这些接口了
Code
    这样在load插件的时候,把插件的引用保存起来AddService(plugin.ToString(), plugin),新建一个插件,在新插件中可以通过宿主的GetService()方法获取指定插件的引用,代码如下
Code
    结果如下:

代码下载:https://files.cnblogs.com/Pcant/SimplePlug-in3.rar
(待续)
上一篇:http://www.cnblogs.com/Pcant/archive/2008/01/22/1048473.html
posted on 2008-02-13 09:40  绿蚂蚁  阅读(1345)  评论(3编辑  收藏  举报