我正在使用二进制序列化将对象保存到配置文件,然后再次读取它们。这些类之一具有事件处理程序,在以前的版本中,我忘记用NonSerializedAttribute
进行标记,因此,这些信息已经在一些配置文件中结束了。更复杂的是,此处理程序使用lamda表达式初始化,该表达式强制编译器为其自动生成匿名类型。
public event PropertyChangedEventHandler PropertyChanged = (sender, args) => { };
问题在于此类型名称在后续版本中已更改,因此,BinaryFormatter
遇到未知类型时,它将引发SerializationException
(“找不到成员:<.ctor> b__1”)。我似乎无法在正确的位置捕获此异常,因为该异常发生在mscorlib.dll
的深处,并且我对SerializationBinder
不太幸运。
有什么方法可以强制BinaryFormatter
忽略此字段,或将其完全从序列化流中删除吗?我应该补充一点,该类没有实现ISerializable接口。
答案 0 :(得分:0)
也许我遗漏了一些东西,但是您不能只用NonSerializedAttribute
标记该字段吗?