可序列化继承

本文关键字:继承 序列化 | 更新日期: 2023-09-27 17:47:48

如果某个东西从Serializable类继承,那么子类仍然是Serializable吗?

可序列化继承

这取决于什么是可序列化的。如果您指的是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 {}