OptionalFieldAttribute实际上有效吗?

时间:2013-09-02 19:07:59

标签: c# serialization

MSDN上写下

  

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

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

1 个答案:

答案 0 :(得分:6)

引用的MSDN页面没有提到这一点,但默认行为是在这种情况下不会抛出异常。如果需要例外,您必须将AssemblyFormat的{​​{1}}属性设置为

BinaryFormatter

默认值为

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full

可以找到更多信息here