自动生成类的反序列化

时间:2018-08-09 07:38:20

标签: c# .net deserialization binaryformatter

我正在使用二进制序列化将对象保存到配置文件,然后再次读取它们。这些类之一具有事件处理程序,在以前的版本中,我忘记用NonSerializedAttribute进行标记,因此,这些信息已经在一些配置文件中结束了。更复杂的是,此处理程序使用lamda表达式初始化,该表达式强制编译器为其自动生成匿名类型。

public event PropertyChangedEventHandler PropertyChanged = (sender, args) => { };

问题在于此类型名称在后续版本中已更改,因此,BinaryFormatter遇到未知类型时,它将引发SerializationException(“找不到成员:<.ctor> b__1”)。我似乎无法在正确的位置捕获此异常,因为该异常发生在mscorlib.dll的深处,并且我对SerializationBinder不太幸运。

有什么方法可以强制BinaryFormatter忽略此字段,或将其完全从序列化流中删除吗?我应该补充一点,该类没有实现ISerializable接口。

1 个答案:

答案 0 :(得分:0)

也许我遗漏了一些东西,但是您不能只用NonSerializedAttribute标记该字段吗?