可序列化的继承

时间:2008-10-08 13:53:22

标签: c# .net vb.net

如果某些东西继承自Serializable类,那么子类是否仍可序列化?

1 个答案:

答案 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 {}