none
有关c#winform插件式开发数据交互问题请教 RRS feed

  • 问题

  • 想请教有关插件与主程序,插件与插件之间通讯的问题

    主程序:Main; 现有主程序接口:public interface Iplugin

    插件:p1.dll  p2.dll

    主程序中通过扫描指定目录下dll文件,使用Assembly tmp = Assembly.LoadFile(file); 载入目录下的插件

    之后主程序主动将其实例化后,使用invoke方法执行p1或p2中已经实现的接口函数

    1,那么在此结构中,我是否有可能实现在p1.dll(可能是带界面的)中调用主程序main中的变量,例如dataset、datagridview当中的所选项等等,或者由p1.dll内部函数主动向main获取其中公共的数据。

    2,如果main已经载入p1.dll  p2.dll,那么是否有可能让着两个插件之间相互交换数据,如果可以是否需要另外编写插件交互数据接口。

    感谢各位回答,谢谢

    2015年7月15日 9:18

全部回复

  • 你好,

    一般比如说你有个主程序,你可以从你的动态链接库里调用方法然后把主程序里面的数据写到方法里然后输出。但是你这边的带界面的我没见过,MEF么?


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年7月17日 2:14
    版主
  • 是c#的

    我看到网上有例子,例如这个http://www.cnblogs.com/xianhong/archive/2011/03/18/1988191.html

    那么根据上面的思路我想实现这样一个小功能:

    主程序是一个简单的winform,上面有三个textbox,分别为tb1,tb2,tb3;还有一个tabControl tab1。

    那么我希望这个小程序可以读取各种的dll插件,实现各种方法;

    当程序执行load程序时,便会将所有指定目录下插件读取到主程序的tab1当中,一个插件将占用一个tabpage,并且在每一个tabpage当中有着不同的功能按钮或其他各种winform插件。

    当我点击tabpage中某一个按钮时,我希望它能够获取到主程序的tb1或tb2的值,并且在执行结束后将其结果返回到tb3当中。

    例如:将tb1与tb2的值相加,输出到tb3(加法)将tb1与tb2的值相减,输出到tb3(减法)将tb1与tb2的值求平均数,输出到tb3(求平均)等等可以无限添加的功能,而每次添加新功能我都不需要修改主程序的内容。

    然而在网上流传的例子当中,都只是简单地show()某一个窗口,或单单return 一个string,并没有介绍到我想要知道的“各个插件与主窗体之间的传值方式”

    所以我希望知道我可以从何了解到这种传值方式,或者得到一个简单的例子参考,谢谢。

    2015年7月17日 9:37