すべてのプロファイル オブジェクトを含むプロファイル ハンドラーをディスクにシリアル化する単純なアプリケーションがあります。それはうまく機能します...しかし、将来的に問題が発生することに気づきました。
次回ソフトウェアを更新すると、プロファイルが変更されたり、新しいフィールドやプロパティが追加されたり、一部のタイプが変更されたりする可能性があります。もちろん、以前のバージョンから逆シリアル化しようとすると、プログラムが壊れます。
この問題を解決する最も簡単で簡単な方法は何ですか? バイナリ ファイルにいくつかのヘッダー ビットを追加し、何らかの方法でチェックする方法があるはずだと考えています。
これが私のシリアライザーメソッドです:
private void SaveProfilesToDisk()
{
var serializer = new BinaryFormatter();
string filename = Path.Combine(Environment.CurrentDirectory, @"MyApp\MyApp.profiles");
using (FileStream fileStream = File.OpenWrite(filename))
{
serializer.Serialize(fileStream, _profileHandler);
}
}
そして、これは私がそれを逆シリアル化する方法です:
private ProfileHandler LoadProfilesFromDisk()
{
var serializer = new BinaryFormatter();
string filename = Path.Combine(Environment.CurrentDirectory, @"MyApp\MyApp.profiles");
using (FileStream fileStream = File.OpenRead(filename))
{
return (ProfileHandler) serializer.Deserialize(fileStream);
}
}
保存ファイルが古くなっていることをユーザーに伝え、名前を変更/削除して新しいファイルを作成するだけで十分です。