【问题标题】:Plugin Backward compatibility插件向后兼容性
【发布时间】:2011-10-13 07:44:55
【问题描述】:

我使用 MEF 创建了一个基于插件的应用程序。所以我创建了一个接口库,它将由插件实现。

但是我有一个关于向后兼容性的问题,

由于我在 PluginInterface 库中定义了接口,现在如果对 IPlugin 进行任何更改,我将无法加载旧版本的插件(实现旧接口)。

那么我怎样才能在应用程序中实现向后兼容呢?

请给我建议,

谢谢

【问题讨论】:

    标签: .net architecture plugins interface mef


    【解决方案1】:

    为了与以前的版本保持兼容,您不能更改界面。如果要更改接口,则需要引入另一个新接口(例如 IPlugin2)。

    【讨论】:

    • 即使重新编译扩展接口所在的域库版本,这难道不成立吗? IOW,我不应该将我的Domain 作为实际主机应用程序的单独解决方案吗?这样我就可以对主机进行更改,而无需重新编译我的域来破坏一堆扩展?
    • @IAbstract 不完全确定您在问什么,但重新编译程序集并不一定会破坏其 ABI。在向程序集添加新功能时,甚至可以使用一些技术来避免破坏 ABI/API。如本答案所述,引入新的名称版本化接口是一种方法。另一个是通过像XmlReaderSettings 这样的类接受参数,可以向其中添加更多属性,而不会破坏针对旧版本编译的代码。
    猜你喜欢
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多