3

現在のプロジェクトでは、FxCopを使用してさまざまなコード分析の警告を処理しています。命名規則については、規則に一致するように名前を変更するか、現在のスペルを維持して警告を抑制するかを決定するオプションがあります。としてマークされているクラスまたは属性に関して[Serializable]、名前の変更の影響に興味があります。特に、既存のシリアル化されたデータとの下位互換性はどのように影響を受けますか?

4

1 に答える 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 に答える