2009-07-08 8 views
3

In meinem aktuellen Projekt verwende ich FxCop, um verschiedene Codeanalysewarnungen durchzuarbeiten. Für die Namensregeln habe ich die Möglichkeit, entweder die Namen so zu ändern, dass sie den Regeln entsprechen, oder die Entscheidung zu treffen, meine aktuelle Schreibweise beizubehalten und die Warnung zu unterdrücken. In Bezug auf Klassen oder Attribute, die als [Serializable] markiert sind, interessieren mich die Auswirkungen von Namensänderungen. Insbesondere, wie würde die Rückwärtskompatibilität mit existierenden serialisierten Daten beeinflusst werden?Serialisierbare Klassen und Refactoring von Namen

Antwort

2

Wenn Sie die Feldnamen ändern und müssen alte Daten serialisiert, bevor Sie Ihre Änderungen lesen, dann könnte es chaotisch. BinaryFormatter ist weitgehend ein Feld (Name) -based Serializer, und es wird nicht glücklich sein. Das Ändern von Eigenschaften und Methoden sollte in Ordnung sein, solange kein externer Code darauf verweist (und stellen Sie sicher, dass Sie Ihre Komponententests ausführen). Lebensfähige Optionen an diesem Punkt: manuelle Serialisierung (ISerializable) und Serialisierungssurrogate. Viel Schmerz.

Wenn Sie XmlSerializer/DataContractSerialializer verwenden, dann können Sie den Serialisierungsnamen getrennt für den Mitgliedsnamen benennen, so wirklich einfach zu beheben. Und einige andere Serializer verwenden, um Namen überhaupt nicht zu ;-p

XmlSerializer Beispiel:

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