所以我实现了一个非常简单的插件系统。
我有以下装配:
MainApp
IPlugin
PluginApp
MainApp
和PluginApp
都指向IPlugin
。现在,在MainApp
中,我扫描一个插件文件夹并搜索实现IPlugin
接口的内容。
但是,它不起作用,因为MainApp
和PluginApp
都引用了他们自己的IPlugin.dll
副本,因此在使用Type.IsAssignableFrom()
时它们不会被识别为匹配!
帮助?
答案 0 :(得分:2)
您可以尝试将定义插件的代码放入卫星dll程序集中。这样,您的主代码和插件都引用了相同的类型。
如果插件可以维护它自己的dll而不是使用与应用程序相同的dll,那么您将遇到版本问题。您的主应用程序将如何处理未实现相同接口的调用插件?
当我们在自己的软件中执行此操作时,我们不得不求助于反射方法调用,而不是转换为接口。它不优雅。
如何将程序集dll添加到插件目录中。他们在创建应用程序时必须引用dll,但在插件实际运行时强制它们使用dll的主程序集版本?