【发布时间】:2014-02-07 21:48:39
【问题描述】:
很抱歉编辑,但我觉得我的问题不够具体。
我有一个主机应用程序、一个 Interface.dll 和一个 Plugin.dll。在我的主机应用程序中,我在全球范围内使用一个类的实例。
但是:我的 Plugin.dll(它从 Interface.dll 中实现我的 iInterface)需要在主机应用程序中访问我的类的特定实例。
通过在接口中使用我的函数名称,我可以从主机应用程序访问插件中的这些函数,但是如何从插件访问全局类实例?
我不会写
Public Interface IPlugin
Sub SetInstance(ByRef MyClassInstance As MyClass)
End Interface
但这正是我想要做的......
非常感谢您的帮助。
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
您希望接口的实现充当
MyClass实例的容器吗?CreateInstance()是否与您要传递的实例有关?否则不能让MyClass实现IInterface吗? -
插件对MyClass不感兴趣,它只是想要一个接口类型的引用。它也不知道关于 MyClass 的任何事情,这是一种存在于插件不知道的不同程序集中的类型。所以你的“ClassInstance”字段需要是 IInterface 类型。
-
@Hans:嗯.. 听起来 MyClass 必须实现 iInterface 而不是 iInterface 必须实现 MyClass?
-
@Mapper:我不明白这一点。如果 MyClass 实现了 iPlugin 接口,那么我会得到很多不应该属于 MyClass 的成员。是的,ClassInstance 只是一个例子。不用管它。