我已经看到很多不同的方法来序列化C#中的对象,我不确定使用哪个以及何时使用。
在目前的情况下,我正在通过WCF序列化曝光,所以我猜测[DataContract]属性是要走的路。
目前我正在阅读一些XML,然后通过WCF公开结果对象。所以我反序列化了我无法访问原始类的XML(因此我正在重建类并且可以按照我想要的方式实现序列化)。然后它必须可以为WCF序列化。
但如果[DataContract]对这种情况有好处,那为什么我不会一直使用它而不是ISerializable或[Serializable]属性?
所以在一个问题中有两个问题,用于解决这个问题,以及为什么有不同的序列化方法。
答案 0 :(得分:2)
DataContract是开始基本序列化的好地方。但是,如果要准确控制对象的序列化方式,请使用ISerializable接口。此外,数据协定属性不会继承,但ISerializable将
ISerializable自.net 1.1以来一直存在。 DataContract是在.net 3.0中引入的,以简化大多数情况下的序列化。
答案 1 :(得分:2)
使用ISerializable,通过实现GetObjectData,您可以自定义对象类中对象的序列化/反序列化方式,而无需创建序列化程序
如果您创建WCF服务,我认为您应该坚持使用DataContract。其最大的优点之一是选择(即没有不良意外)机制。