バイナリシリアル化を使用してデータを保存します。今度はプログラム内のフィールドをInt32からstructに変更しました。しかし、私はまだ後方互換性があるようにフィールドをInt32として保存する必要があります。それ、どうやったら出来るの?構造体をカスタマイズして、Int32としてシリアル化する
背景情報 私のプログラムはDelphiから移植され、多くの配列を使用します。問題は、デルファイのリストが1から数え始めていることです。ビルコルートは、私が現在C#で開発しているときにインデックスを追跡するのを難しくしました。したがって、構造体を使用して、1ベースのインデックスを扱いやすくします。私がプログラム全体を修正するまで、0ベースの配列。構造体との1とint32の持つ1 -
コード
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();
}
...
}
'struct'の定義は何ですか? –
「バイナリシリアル化」とは、「BinaryFormatter」を意味しますか? –
@ George Duckett - コードを追加しました。 – magol