2014-01-18 98 views
1

我很抱歉编辑,但我感觉像我的问题不够具体。通过界面传递类参考

我有一个主机应用程序,一个Interface.dll和一个Plugin.dll。在我的主机应用程序中,我在全局使用一个类的实例。

但是:我的Plugin.dll(实现InterfaceInterface的iInterface)需要访问Host Application中我的类的特定实例。

通过在接口中使用我的函数名称,我可以从宿主应用程序访问插件中的那些函数,但是如何从插件访问全局类实例?

我不能写

Public Interface IPlugin 

    Sub SetInstance(ByRef MyClassInstance As MyClass) 

End Interface 

但这上课正是我想做的事情......

非常感谢您的帮助。

+2

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

您希望将接口的实现作为“MyClass”实例的容器吗? CreateInstance()与你想传递的实例有什么关系?否则,你不能让'MyClass'实现'IInterface'吗? –

+0

该插件对MyClass不感兴趣,它只是需要一个接口类型的引用。它也不了解任何关于MyClass的知识,这是一种生活在插件不知道的不同组件中的类型。所以你的“ClassInstance”字段需要是IInterface类型。 –

回答

0

在接口中没有办法从主机应用程序实现该类。唯一的方法就是将其引用为会导致其他问题的对象。

解决方案是将常用类导出到自己的库(.dll)中,并将此库实例化为宿主应用程序和插件以及接口。

现在通过引用可以没有任何问题,就好像所有不同的代码部分都在同一个命名空间内一样。

谢谢你们的帮助。