2012-06-11 180 views
4

我有繼承OldBaseClass類的LegacyClass。繼承新的基類(繼承舊的基類)是否有重大改變?

我正在考慮改變對之間,從而

LegacyClass繼承NewBaseClass和 NewBaseClass繼承OldBaseClass引入一個新的類。

NewBaseClass和OldBaseClass都不是抽象的。此更改是否會破壞依賴於(甚至可能繼承)LegacyClass的舊MSIL程序集的程序集兼容性?

+3

找出來的最簡單方法就是試試它,不是嗎?如果你的項目非常龐大,那麼可能爲了測試這個項目而創建一個新的小項目。 –

+0

測試可以證明它不起作用,但不是它能夠工作 - 例如,這可能取決於每個班級是否有虛擬方法?它可能取決於班級使用的功能嗎?我想知道最一般和最詳細的答案。 :) –

+1

[改變基類時向後兼容性]的可能重複(http://stackoverflow.com/questions/5321880/backwards-compatibility-when-changing-base-class) – jgauffin

回答

3

this answer所述,只要您沒有實際更改任何現有行爲(更具體而言,取決於行爲如何更改),就應該沒問題。如果新類所做的是添加新的(單獨的)方法/屬性,那麼你應該沒問題。但是,通常情況下,取決於。考慮以下問題:

  • 誰在使用您的程序集(局外人員或只有您組織內的人員)?
  • 你能夠重新編譯客戶端嗎?
  • 您能夠在這些客戶端上運行自動或手動單元測試嗎?
  • 您是否打算添加或更改LegacyClass的功能?