序列化和属性

时间:2011-04-13 14:33:34

标签: c# .net serialization

何时应该使用[Serializable]属性将类标记为可序列化?该文件说该课不应该继承。但是,我已将此属性与XmlInclude属性结合使用,因此我也可以序列化派生类。这是不正确的吗?

我正在使用XmlSerializer和StreamWriter类来序列化我的对象。

此外,我的理解告诉我,任何公共属性(get和sets)都将被序列化,其他字段将被忽略。这也是正确的吗?

任何指导都将不胜感激。

由于

2 个答案:

答案 0 :(得分:2)

  

我应该何时将课程标记为   可序列化[Serializable]   属性?该文件说明了这一点   该类不应该继承。   但是,我已经使用了这个属性   与XmlInclude结合   属性所以我可以序列化我的   派生类也是如此。这是   不正确的?

     

我正在使用XmlSerializer和   StreamWriter类来序列化我的   对象。

您永远不需要[Serializable]属性进行XML序列化。它仅用于格式化程序的序列化(例如BinaryFormatterSoapFormatter

  

此外,我的理解告诉我,任何公共属性(get和sets)都将被序列化,其他字段将被忽略。这也是正确的吗?

这是对的。只有公共读/写属性被序列化,而不是字段。

答案 1 :(得分:0)

XmlSerializer不会检查此标志;答案是“当使用BinaryFormatter(或其他一些;不是很多)而不是实现ISerializable时”。

大多数序列化程序都不使用此标志。