可序列化的类和名称重构

时间:2009-07-08 12:47:23

标签: c# serialization code-analysis

在我目前的项目中,我正在使用FxCop来处理各种代码分析警告。对于命名规则,我可以选择更改名称以匹配规则,或者决定保留当前的拼写并禁止警告。对于标记为[Serializable]的类或属性,我对名称更改的后果感兴趣。特别是,如何影响与现有序列化数据的向后兼容性?

1 个答案:

答案 0 :(得分:2)

如果您在更改之前更改 字段名称 需要读取旧数据序列化,那么它可能会变得混乱。 BinaryFormatter主要是基于字段(名称)的序列化程序,它不会很高兴。只要没有外部代码引用它,就应该改变属性和方法(并确保运行单元测试)。此时可行的选项:手动序列化(ISerializable)和序列化代理。很多痛苦。

如果您使用的是XmlSerializer / DataContractSerialializer,那么您可以将序列化名称分别命名为成员名称,因此非常容易修复。而其他一些序列化程序根本不使用名称;-p

XmlSerializer示例:

[XmlElement("Color")] // original spelling
public string Colour {get;set;} // now with the correct spelling ;-p