OptionalFieldAttribute实际上有效吗?

Mis*_*hax 6 c# serialization

MSDN上他们写

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

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

Mis*_*hax 6

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

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full

默认值为

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple

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