当前位置:  开发笔记 > 编程语言 > 正文

可序列化的继承

如何解决《可序列化的继承》经验,为你挑选了1个好方法。

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



1> Marc Gravell..:

这取决于你的意思是可序列化的.如果您的意思是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 {}


对不起,但你错了.属性*做*与问题有关; [Serializable]属性是编译器处理不同的属性之一:它使用它来设置CLI类的"可序列化"标志(如果检查IL,它实际上会抛弃该属性).
同样,我从来没有说过从属性继承的类 - 尽管实际上,因为属性*是*类,属性可以从彼此继承,属性类非常多地继承自属性...
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有