我们有一个解决方案,我们将一个相当大/复杂的 C# 对象作为二进制数据存储在我们的数据库中。我担心的是,当对此类进行更改时,我们冒着保存到数据库的数据在代码更改后反序列化失败的风险。
下面是我们用来序列化对象的代码:
public static byte[] SerializeObject(object toBeSerialized)
{
var stream = new MemoryStream();
var serializer = new BinaryFormatter();
serializer.Serialize(stream, toBeSerialized);
stream.Position = 0;
return stream.ToArray();
}
这是我们的反序列化方法:
public static T DeserializeObject<T>(byte[] toBeDeserialized)
{
using (var input = new MemoryStream(toBeDeserialized))
{
var formatter = new BinaryFormatter();
input.Seek(0, SeekOrigin.Begin);
return (T) formatter.Deserialize(input);
}
}
我的问题是,为了使旧对象的反序列化失败,必须改变什么/改变多少?