为什么 BinaryFormatter 在添加新的 属性 后不抛出异常?

Why doesn't BinaryFormatter throw an exception after a new property is added?

我有一个class定义如下:

[Serializable]
class C
{
  String str { get; set; }
  int num { get; set; }
}

我已经用 BinaryFormatter 将它序列化到一个文件中。然后我改变了 class 如下所示。

[Serializable]
class C
{
  String str { get; set; }
  int num { get; set; }
  int num2 { get; set; }
}

但是,在反序列化时,格式化程序不会抛出异常,而是将 num2 设置为零。有没有办法要求它抛出?

好的。我已经想出要改变我可以设置的行为

formatter.AssemblyFormat = FormatterAssemblyStyle.Full;

虽然这可能有点矫枉过正。