如果某些东西继承自Serializable类,那么子类是否仍可序列化?
答案 0 :(得分:80)
这取决于你的意思是可序列化的。如果您指的是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 {}