6

他们在MSDN上写

可以通过将 OptionalFieldAttribute 属性应用于字段来将字段标记为可选。在反序列化过程中,如果缺少可选数据,序列化引擎会忽略该缺失,并且不会抛出异常。

我无法获得例外。我尝试创建一个类,用 SerializableAttribute 标记它,用 BinaryFormatter 序列化一个对象并将状态保存到磁盘上的文件中,然后将两个字段添加到我没有用 OptionalFieldAttribute 标记的类中,并尝试反序列化反对我只是坚持到磁盘。我很惊讶没有抛出异常?

4

1 回答 1

7

引用的 MSDN 页面没有提到这一点,但默认行为是在这种情况下不会引发异常。如果需要异常,则必须将AssemblyFormat属性设置BinaryFormatter

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full

默认值为

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple

更多信息可以在这里找到。

于 2013-09-02T19:52:42.387 回答