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