为了向应用程序动态添加功能,我非常依赖 MEF,它是一个为第三方程序集(插件)提供接口的好工具。但是现在,我不仅想要一个可以从我的主应用程序访问的插件的通用接口,而且还为插件提供一个接口,通过它他们可以从我的主应用程序访问各种资源(例如对象)。怎么可能做到这一点?我正在考虑类似插件 API 的东西,但我不确定 MEF 是否提供这样的选项。
对于这项任务,我想到了两个选项:
- 将对象作为参数传递给插件实例化
缺点:如果我通过假设,例如我在其他地方使用的日志记录对象实例,第三方插件可以轻松调用 Dispose,使其无法用于整个应用程序或其他插件。非常危险!
- 声明全局可访问的静态方法