我使用二进制序列化保存数据。现在我已经将程序中的一个字段从 Int32 更改为一个结构。但我仍然想将该字段保存为 Int32 以向后兼容。我怎么做?
背景信息 我的程序是从 Delphi 移植过来的,使用了很多数组。问题是Delphi中的列表是从1开始计数的,在我现在用C#开发的时候,vilkort让跟踪索引变得很困难。所以我使用了一个struct来更容易处理从1开始的索引基于 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();
}
...
}