在我当前的项目中,我使用 FxCop 来处理各种代码分析警告。对于命名规则,我可以选择更改名称以匹配规则,或者决定保留我当前的拼写并取消警告。关于标记为 的类或属性[Serializable]
,我对名称更改的后果很感兴趣。特别是,与现有序列化数据的向后兼容性将如何受到影响?
问问题
452 次
1 回答
2
如果您更改字段名称并且需要在更改之前读取序列化的旧数据,那么它可能会变得混乱。BinaryFormatter
很大程度上是一个基于字段(名称)的序列化程序,它不会很高兴。只要没有外部代码引用它,更改属性和方法应该没问题(并确保运行您的单元测试)。那时可行的选项:手动序列化 ( ISerializable
) 和序列化代理。很多痛苦。
如果您使用XmlSerializer
/DataContractSerialializer
那么您可以将序列化名称单独命名为成员名称,这样非常容易修复。而其他一些序列化程序根本不使用名称;-p
XmlSerializer
例子:
[XmlElement("Color")] // original spelling
public string Colour {get;set;} // now with the correct spelling ;-p
于 2009-07-08T12:51:37.997 回答