Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接口库版本控制-中断更改_C#_Reflection_Plugins_Interface_Versioning - Fatal编程技术网

C# 接口库版本控制-中断更改

C# 接口库版本控制-中断更改,c#,reflection,plugins,interface,versioning,C#,Reflection,Plugins,Interface,Versioning,我目前有一个C#项目,它使用插件,并且有一个相当常见的插件处理方法:IPlugin接口存储在一个dll中,该dll以传统的动态方式链接。主机应用程序查找类库,导出公开此接口的类,并在运行时通过反射加载它们 包含接口的dll还包含帮助器类,用于更新插件、提供抽象基类等 我的问题是,如何打破主机和插件程序集之间的接口?换句话说,如果我编译并分发主机应用程序,然后分发与更高版本的插件dll链接的插件(其中helper类已更改,但IPlugin的定义方式完全相同),主机还会接收插件吗?在我使用的反射方法

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

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


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

如果程序集不是由特定版本加载的,那么我会说,您真正遇到的唯一破坏性更改是在更改接口契约时。如果您只是在更改帮助器类,那么这应该不是问题