2011-10-04 105 views
5

可能重複:
Serializable InheritanceC#序列化/繼承

是系列化的繼承?

例子:

[Serializable] 
class A 
{ 
} 

class B : A 
{ 
} 

如果我試圖序列化/反序列B類的一個實例,我得到一個異常,指出該類沒有標記爲可序列化。因此,問題是序列化是可以繼承的嗎?我只是想念如何去做,或者是否每個需要序列化的類都需要明確標記爲這樣?

回答

11

這是not inheritable

需要注意的是Serializable屬性不能被繼承是很重要的。如果從MyObject派生一個新類,那麼新類也必須標記爲該屬性,否則不能序列化。

你應該紀念的子類,以及讓它序列化:

[Serializable] 
class B : A { } 
+2

小記; *在這種情況下*,該屬性的Inherited'屬性不直接相關(儘管它確實是正確的)。這是因爲在元數據層,'[Serializable]'***不是作爲屬性實現的,而是作爲CLI類標誌(你可以在IL流中檢查它)。 –

+1

謝謝Marc的說明,它肯定是不重要的! –

+0

@Marc Gravell:更改了文字並刪除了屬性引用...謝謝 –