如何使用BinaryFormatter反序列化包含已不存在字段的对象



假设我不久前创建了一个数据类:

[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.Serialization异常:在类MyData 中找不到字段"昵称">

有没有办法告诉BinaryFormatter,如果遇到字段昵称,就忽略它,并像往常一样反序列化其余字段?

不,这是不可能的。您要做的是将它反序列化为与以前结构相同的类,然后手动将旧对象迁移到新对象,并保存新对象以备将来使用。

最新更新