2009-07-08 9 views
3

Sur mon projet actuel, j'utilise FxCop pour analyser divers avertissements d'analyse de code. Pour les règles de dénomination, j'ai l'option de changer les noms pour correspondre aux règles ou de prendre la décision de conserver mon orthographe actuelle et supprimer l'avertissement. En ce qui concerne les classes ou les attributs qui sont marqués [Serializable], je suis intéressé par les ramifications des changements de nom. En particulier, comment la rétrocompatibilité avec les données sérialisées existantes pourrait-elle être affectée?Classes sérialisables et refactoring de noms

Répondre

2

Si vous modifiez les noms de champs et besoin de lire les anciennes données sérialisé avant vos modifications, il pourrait être gênant. BinaryFormatter est en grande partie un sérialiseur basé sur le nom de domaine, et il ne sera pas heureux. Changer les propriétés et les méthodes devrait être parfait tant qu'aucun code externe ne le référence (et assurez-vous d'exécuter vos tests unitaires). Options viables à ce stade: sérialisation manuelle (ISerializable) et substituts de sérialisation. Beaucoup de douleur.

Si vous utilisez XmlSerializer/DataContractSerialializer, vous pouvez nommer le nom de la sérialisation séparément du nom du membre, ce qui facilite grandement la résolution. Et d'autres serializers ne pas utiliser des noms à tous ;-P

XmlSerializer exemple:

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