2010-08-10 80 views
4

當試圖序列化我的類和子類時,發生了一堆未捕獲的異常之後,我終於明白了我的問題:[Serializable]在應用於子類時不會繼承一個基類。一般來說,我仍然對C#屬性非常模糊,但我確實明白,在創建自定義屬性時,程序員能夠啓用屬性的自動繼承。覆蓋C#中的內在屬性的繼承

有沒有辦法重寫[Serializable]的繼承?是否有充分的理由說明爲什麼它從一開始就沒有完成,並且/或者首先這樣做會是一個壞主意?我希望所有基類的所有子類都是可序列化的,所以不得不將這個屬性添加到我創建的任何新子類中。

謝謝!

回答

5

有一個很好的理由,它沒有在第一個地方做 - 只是因爲基類是可序列化的並不意味着派生類自然是。

哎呀,object是序列化 - 如果串行性是遺傳的,這將意味着在.NET每類將是序列化:)

你不能「越權」,要麼 - 你指定它在每類。我認爲這是一件好事,實際上 - 當您添加屬性時,您應該對該類進行心理檢查,並檢查確實對序列化它有意義。

+6

你有沒有厭倦總是正確的? – 2010-08-10 19:46:25

+0

關於此的一個有趣的筆記。實現'ISerializable' **的類也必須標記爲'SerializableAttribute'。據推測,這允許運行時確定是否有可能反序列化序列化元數據中引用的類型(因爲在該點沒有類型的實例可用)。 – LBushkin 2010-08-10 19:57:52

+2

@Jimmy Hoffa,我想喬恩偶爾錯過一個錯誤的答案來打破單調的正確。然而,經過進一步檢查,結果是錯誤的答案也是正確的。 – 2010-08-10 20:20:34