【发布时间】:2012-01-03 21:30:45
【问题描述】:
我们有一个应用程序,它具有可以通过多种不同方式实现的功能。我们有一个标准化的接口(比如,IWorker)来模拟所需的功能。我们有几个模块,每个模块都有自己的 IWorker 实现,它们以截然不同的方式处理必要的任务。目前,根据需要的应用程序版本,我们提供包含适当模块的特定 DLL,一切都很好。但是,我们现在希望支持用户可以在运行时根据变化的条件更换模块的场景(即网络连接丢失,因此我们现在希望使用 IFileWorker 模块而不是 INetworkWorker 模块)。我们如何在运行时卸载一个模块并加载另一个模块?
【问题讨论】:
-
MEF 不包括开箱即用的功能。您需要将导出加载到单独的 AppDomain 并卸载 AppDomain 以卸载导出。 this 相关问题也可能有所帮助。
标签: c# .net plugins module mef