我正在开发具有抽象类示例的SDK。 在新的SDK版本中,我拆分抽象类,因此部分参数将在Example_BaseClass上。所以“Example”继承自“Example_BaseClass”。 使用Example类的程序员不应该对此更改产生影响。
如果我使用新的SDK编译我的代码(我的系统上的插件类型)并将其放在旧的软件版本(使用旧的SDK)上,它会引发异常: '无法从程序集'
加载类型'Example_BaseClass'它喜欢搜索新类,尽管它应该是透明的。 甚至可以保持这种向后兼容性吗?
谢谢
答案 0 :(得分:0)
在新版SDK中,Example
类取决于 Example_BaseClass
。因此,当您使用新SDK编译插件时,编译后的代码如下所示:
Example
(访问某些方法或从中继承)Example
取决于Example_BaseClass
。它试图找到它并因运行时异常而失败。至于如何保持向后兼容性。 C#编译为中间层而不是二进制代码(汇编)。这让C#具有某些好处,比如反射。但它是成本(如你所见)。除非CoreRT repo的人给我们一种方法来将代码原生地编译成二进制文件,否则我看到的唯一方法就是将SDK作为nuget包发布,经常更新,并经常让人dotnet restore
。