Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
.net 继承新基类(继承旧基类)是一个突破性的变化吗?_.net_Inheritance_Compatibility - Fatal编程技术网

.net 继承新基类(继承旧基类)是一个突破性的变化吗?

.net 继承新基类(继承旧基类)是一个突破性的变化吗?,.net,inheritance,compatibility,.net,Inheritance,Compatibility,我有一个继承OldBaseClass的类LegacyClass 我正在考虑一个改变,在两者之间引入一个新的类,以便 LegacyClass继承NewBaseClass和 NewBaseClass继承OldBaseClass NewBaseClass和OldBaseClass都不是抽象的。此更改是否会破坏依赖(甚至可能继承)LegacyClass的旧MSIL程序集的程序集兼容性?如中所述,只要您不实际更改任何现有行为(更具体地说,取决于该行为的更改方式),就应该可以。如果新类所做的只是添加新的(单

我有一个继承OldBaseClass的类LegacyClass

我正在考虑一个改变,在两者之间引入一个新的类,以便

LegacyClass继承NewBaseClass和 NewBaseClass继承OldBaseClass

NewBaseClass和OldBaseClass都不是抽象的。此更改是否会破坏依赖(甚至可能继承)LegacyClass的旧MSIL程序集的程序集兼容性?

如中所述,只要您不实际更改任何现有行为(更具体地说,取决于该行为的更改方式),就应该可以。如果新类所做的只是添加新的(单独的)方法/属性,那么您就可以了。然而,通常情况下,这要视情况而定。考虑以下问题:

  • 谁在使用您的程序集(外部人员或仅组织内部人员)
  • 你能重新编译客户端吗
  • 您能够在这些客户端上运行自动或手动单元测试吗?
  • 您是否打算添加或更改LegacyClass的功能

找到答案的最简单方法就是尝试一下,不是吗?如果你的项目很大,那么也许可以做一个新的小项目来测试它。测试可以证明它不起作用,但不能证明它起作用——例如,它是否取决于每个类上是否有虚拟方法?它是否取决于类中使用的功能?我想知道最一般和详细的答案。:)可能的重复项我还需要假设存在无法为其运行自动/手动测试的外部消费者:)