接口库版本控制 - 突破性变化

时间:2010-07-05 08:10:38

标签: c# reflection plugins interface versioning

我目前有一个使用插件的C#项目,并且有一个相当常见的插件处理方法:IPlugin接口存储在一个以传统动态方式链接的dll中。主机应用程序查找类库,导出暴露此接口的类,并在运行时通过反射加载它们。

包含接口的dll还包含帮助程序类,用于更新插件,提供抽象基类等。

我的问题是,如何破坏主机和插件程序集之间的接口?换句话说,如果我编译和分发主机应用程序,然后分发已与更高版本的插件dll链接的插件(其中帮助程序类已更改,但IPlugin以完全相同的方式定义),将是主机仍然拿起插件?在IPlugin被我使用的反射方法视为不同的“类型”之前,我需要对插件库进行多少更改?

1 个答案:

答案 0 :(得分:0)

如果程序集没有按特定版本加载,那么您将会遇到的唯一重大更改是更改接口合同时。如果您只是更改帮助程序类,它应该不是问题。