バイナリ シリアル化を使用してデータを保存します。ここで、プログラム内のフィールドを Int32 から構造体に変更しました。しかし、下位互換性を保つために、フィールドを Int32 として保存したいと考えています。それ、どうやったら出来るの?
背景情報 私のプログラムは Delphi から移植されており、多くの配列を使用しています。問題は、Delphi のリストが 1 からカウントを開始することです。現在 C# で開発しているときに、vilkort によってインデックスを追跡することが難しくなりました。プログラム全体を修正するまで、0 から始まる配列。
コード
public void Save()
{
using (var writer = File.Open(Path, FileMode.Create))
{
var serializer = new BinaryFormatter();
serializer.Serialize(writer, _data);
}
}
private void Load()
{
using (var reader = File.Open(Path, FileMode.Open))
{
var deserializer = new BinaryFormatter();
_data = (Foo) deserializer.Deserialize(reader);
}
}
public struct Indexer
{
//0-baserat index
private int _index;
public Indexer(int index)
{
_index = index;
}
static public implicit operator Indexer(int index)
{
return new Indexer(index);
}
static public implicit operator int(Indexer indexer)
{
return indexer._index;
}
public override string ToString()
{
return (_index + 1).ToString();
}
...
}