我有一个运行良好的插件系统,但我需要访问主应用程序中的类。 主应用程序中的类存储受保护的数据。 我需要能够从每个插件中放置和检索受保护的数据。
(MainApplication.Protect)可以看到(IPlugin.plugin),但我需要(IPlugin.plugin)才能看到(MainApplication.Protect)
其中 (MainApplication.Protect .PluginDataGet(IPlugin name) & .PluginDataPut(IPlugin name)) 只能由 (IPlugin.plugin) 访问
我尝试了反射,甚至尝试了接口。 也许我在某个地方做错了什么。
这是一般方法:
PluginInterfaces
,至少有两个接口:IPlugin
和IPluginHost
。IPlugin
应该有一个接受 IPluginHost
实例的方法。例如,我们称其为IPlugin.Bind(IPlugin host, ...)
。IPlugin
。IPluginHost
。它的实例应该提供插件执行所需的所有成员。IPlugin
方法之前,拥有一个实现 IPluginHost
的类的实例,并根据您的要求进行设置。IPlugin.Bind(IPlugin host, ...)
。传递您在上一步中准备的 IPluginHost
实例。请尝试一下。如果您需要更多详细信息,则必须提出其他问题。这个模式的安排可能略有不同,但想法是,在一般情况下,插件和插件主机是互惠的:它们以某种顺序相互传递一些接口实例,然后使用它们。
谢谢。
—SA