2008-10-08 66 views
41

如果某個繼承自Serializable類的對象是子類還是Serializable?可序列化繼承

+0

此外,此問題不明確 – 2009-06-17 00:37:53

回答

75

這取決於你的意思是可序列化的。如果您的意思是CLI標記(即[Serializable]屬性),則這是而不是繼承(下面的證明)。您必須明確標記每個派生類爲[Serializable]。但是,如果您的意思是ISerializable接口,那麼是的:接口實現是繼承的,但您需要小心 - 例如使用virtual方法,以便派生類可以將其數據貢獻給序列化。

using System; 

class Program 
{ 
    static void Main() 
    { 
     Console.WriteLine(typeof(Foo).IsSerializable); // shows True 
     Console.WriteLine(typeof(Bar).IsSerializable); // shows False 
    } 
} 

[Serializable] 
class Foo {} 

class Bar : Foo {} 
+0

屬性根據其性質不會被繼承。另外,一個類不能被認爲是從屬性繼承的。人類,屬性與OP的問題無關。 – NotMe 2008-10-09 12:25:35