【问题标题】:Is inheriting a new base class (that inherits the old base class) a breaking change?继承一个新的基类(继承旧的基类)是一个重大变化吗?
【发布时间】:2023-03-18 02:35:02
【问题描述】:

我有继承 OldBaseClass 的类 LegacyClass。

我正在考虑更改以在两者之间引入一个新课程,以便

LegacyClass 继承 NewBaseClass AND NewBaseClass 继承 OldBaseClass。

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

【问题讨论】:

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

标签: .net inheritance compatibility


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-03-10
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多