【问题标题】:Serialization and attributes序列化和属性
【发布时间】:2011-08-04 18:58:19
【问题描述】:
何时应该使用 [Serializable] 属性将类标记为可序列化?该文档说不应继承该类。但是,我已将此属性与 XmlInclude 属性结合使用,因此我也可以序列化我的派生类。这是不正确的吗?
我正在使用 XmlSerializer 和 StreamWriter 类来序列化我的对象。
另外,我的理解告诉我,任何公共属性(get 和 sets)都将被序列化,其他字段将被忽略。这也是正确的吗?
任何指导将不胜感激。
谢谢
【问题讨论】:
标签:
c#
.net
serialization
【解决方案1】:
我应该什么时候将课程标记为
可使用 [Serializable] 进行序列化
属性?文件说
该类不应该被继承。
但是,我在
与 XmlInclude 结合
属性,所以我可以序列化我的
派生类也是如此。这是
不正确?
我正在使用 XmlSerializer 和
StreamWriter 类来序列化我的
对象。
对于 XML 序列化,您永远不需要 [Serializable] 属性。它仅用于格式化程序的序列化(例如BinaryFormatter、SoapFormatter)
另外,我的理解告诉我任何公共属性(get 和 sets)都将被序列化,其他字段将被忽略。这也是正确的吗?
这是正确的。只有公共读/写属性被序列化,而不是字段。
【解决方案2】:
XmlSerializer 不检查这个标志;答案是“当使用 BinaryFormatter(或其他几个;不多)而不实现 ISerializable 时”。
大多数序列化程序不使用此标志。