2013-08-25 47 views
0

我曾經看到過一個項目,其中程序員在根元素上有像MS.InternalMicrosoft.*這樣的文件夾。他已將.net類中的已反編譯的源複製到未標記爲密封的類中,以修改它們或者能夠以其他方式訪問它們或修改它們。從.net庫複製代碼是否是一種常見的做法?

我想知道這是常用的方法,如果沒有這種情況的解決方法或這是否合法嗎?

如果將這些類標記爲密封並且內部應該保護我們;那麼爲什麼類和方法像BooleanBoxesDoubleUtil.IsNaN(double)內部?它們有利於優化。

+4

什麼可能使某人做到這一點?對於這個問題,他們拷貝多少代碼就等於它自己的文件夾結構?多麼奇怪的做法... –

+3

沒有評論這樣做的合法性,我會說這是非常罕見的。如果你需要繼承一個「密封」類,那麼你很可能會錯誤地做某件事。 – dasblinkenlight

+0

可能他已經將代碼從WPF移植到Silverlight,反之亦然,並希望添加丟失的東西? –

回答

4

這不是常見的做法,但實際上(非常)不好的做法。取決於反編譯的代碼(作品)的許可證,它可能在版權法方面可能是合法的也可能不合法。

當應用於類時,sealed修飾符可防止其他類從其繼承。標記爲sealed的類的作者不希望任何人從它繼承。

對於覆蓋基類中虛擬方法或屬性的方法或屬性,還可以使用sealed修飾符。這使您可以允許類從您的類派生,並防止它們重寫特定的虛擬方法或屬性。

相關問題