假设我前一段时间创建了一个数据类:
[Serializable]
public class MyData
{
public string name;
public string nickname;
public int id;
}
然后我使用BinaryFormatter来序列化用户数据并将其保存到文件中。时间过去后,我决定我们不再需要“昵称”字段,因此我将其删除:
[Serializable]
public class MyData
{
public string name;
public int id;
}
但是,现在当我尝试反序列化一个仍包含昵称字段的序列化对象时,它将引发异常:
System.Runtime.Serialization.SerializationException:在类MyData中找不到字段“昵称”
有没有办法告诉BinaryFormatter,如果遇到字段昵称就忽略它,然后像往常一样反序列化其余字段?
答案 0 :(得分:1)
不,这是不可能的。您要做的是将其反序列化为具有与以前相同结构的类,然后手动将旧对象迁移到新对象,并保存新对象以备将来使用。