何时应该使用[Serializable]属性将类标记为可序列化?该文件说该课不应该继承。但是,我已将此属性与XmlInclude属性结合使用,因此我也可以序列化派生类。这是不正确的吗?
我正在使用XmlSerializer和StreamWriter类来序列化我的对象。
此外,我的理解告诉我,任何公共属性(get和sets)都将被序列化,其他字段将被忽略。这也是正确的吗?
任何指导都将不胜感激。
由于
答案 0 :(得分:2)
我应该何时将课程标记为 可序列化[Serializable] 属性?该文件说明了这一点 该类不应该继承。 但是,我已经使用了这个属性 与XmlInclude结合 属性所以我可以序列化我的 派生类也是如此。这是 不正确的?
我正在使用XmlSerializer和 StreamWriter类来序列化我的 对象。
您永远不需要[Serializable]
属性进行XML序列化。它仅用于格式化程序的序列化(例如BinaryFormatter
,SoapFormatter
)
此外,我的理解告诉我,任何公共属性(get和sets)都将被序列化,其他字段将被忽略。这也是正确的吗?
这是对的。只有公共读/写属性被序列化,而不是字段。
答案 1 :(得分:0)
XmlSerializer不会检查此标志;答案是“当使用BinaryFormatter(或其他一些;不是很多)而不是实现ISerializable时”。
大多数序列化程序都不使用此标志。