Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在C中如何将对象从主窗体传递到插件#_.net_Winforms_C# 4.0 - Fatal编程技术网

.net 在C中如何将对象从主窗体传递到插件#

.net 在C中如何将对象从主窗体传递到插件#,.net,winforms,c#-4.0,.net,Winforms,C# 4.0,我有一个windows应用程序(C#,.NET4.0)。此windows应用程序基于插件。我想将一个对象从主应用程序传递到插件 谁能给我举个例子吗 有趣的是你应该问这个,我现在正在做类似的事情 在为插件定义的接口中,提供一个方法/属性,该方法/属性是插件可以使用的应用程序接口 然后在应用程序内部实现该接口 interface IPlugin { void CanBeCalledByTheApplication(IAppObject main); } interface IAppObj

我有一个windows应用程序(C#,.NET4.0)。此windows应用程序基于插件。我想将一个对象从主应用程序传递到插件


谁能给我举个例子吗

有趣的是你应该问这个,我现在正在做类似的事情

在为插件定义的接口中,提供一个方法/属性,该方法/属性是插件可以使用的应用程序接口

然后在应用程序内部实现该接口

interface IPlugin
{
    void CanBeCalledByTheApplication(IAppObject main);
}


interface IAppObject
{
    void Alert(string msg);
}
现在,在你的插件中调用你的方法,并传入那个类

现在在插件中,它将能够利用您在界面中设计的方法和属性

interface IPlugin
{
    void CanBeCalledByTheApplication(IAppObject main);
}


interface IAppObject
{
    void Alert(string msg);
}
现在,在插件的实现中,您只需

 main.Alert("this is my message");
在你的申请中,你会

(IPlugin)myPlugin.CanBeCalledByTheApplication(someObject);

这显然不是一个完整的示例,但您应该能够理解。

您使用的是什么插件系统?你能发布一些代码来展示你已经得到了什么(也许是一个插件如何工作的例子?)谢谢。我的代码就是基于这个Paul。。谢谢你抽出时间陪我。我想知道将我的具体类与接口放在同一个程序集中是否是一个好主意。这样,主应用程序和插件都可以使用它。这是一个好主意吗?将你的接口放在一个单独的程序集中,这样你就可以(潜在地)将你的插件接口分发给其他开发人员,而不需要他们将要托管的应用程序的最新版本。然后,您还可以通过验证替代测试引擎/模拟等来测试插件。抱歉,回复太晚了。昨晚很晚了。我脑子里还有些东西,想把它弄清楚。。我的想法可能很糟糕,但我还是想知道为什么这是个坏主意。我的想法是,将我的具体类和接口(用户将实现以构建插件)放在一个单独的程序集中并分发它。这个具体的类只是一组少数属性,并且有一个重写的ToString()方法。我还想知道的是在vs2010中将这个具体的类添加为链接文件。这是个好主意吗?或者是非常糟糕的。请让我知道..应用程序引用接口。插件引用接口dll将这两个部分混合在一起会咬你。顺便说一句,你有没有想过接受一个答案或投票?很抱歉回复太晚了。他们两个我都做了。。向上投票并将其标记为答案。但是,我已经开始使用MEF:)