代码之家  ›  专栏  ›  技术社区  ›  Jean-Bernard Pellerin

在C中实现可序列化类的首选方法是什么#

  •  2
  • Jean-Bernard Pellerin  · 技术社区  · 14 年前

    我见过许多不同的方法来序列化C中的对象,但我不确定使用哪种方法以及何时使用。

    目前我正在阅读一些XML,然后通过WCF公开结果对象。因此,我正在反序列化XML,因为我无法访问原始类(因此,我正在重建类,并可以以任何我想要的方式实现序列化)。然后它必须是可序列化的WCF。

    但是如果[DataContract]对这种情况很好,那么为什么我不一直使用它,而不是使用I Serializable或[Serializable]属性呢?

    一个问题有两个问题,用来解决这个问题,为什么有不同的序列化方法。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Josh    14 年前

    DataContract是开始基本序列化的好地方。但是,如果您想确切地控制对象的序列化方式,请使用ISerializable接口。此外,数据协定属性不会被继承,但ISerializable将

        2
  •  2
  •   vc 74    14 年前

    使用ISerializable,通过实现GetObjectData,您可以自定义在对象的类中序列化/反序列化对象的方式,而无需创建序列化程序

    如果您创建一个WCF服务,我认为您应该坚持DataContract。它的一大优势是选择加入(即没有坏的惊喜)机制。