2017-01-30 18 views
2

私は次のように定義されたクラスを持っている:新しいプロパティを追加した後にBinaryFormatterで例外がスローされないのはなぜですか?

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

私はにBinaryFormatterを使用してファイルにそれを連載しました。次に、クラスを以下のように変更しました。

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

しかし、代わりに例外をスローするデシリアライゼーションの際にフォーマッタはゼロにNUM2を設定します。それを投げるように要求する方法はありますか?

+0

参照するには、[バージョン寛容シリアル化](https://msdn.microsoft.com/en-us/library/ms229752(v = vs.110).aspx)があります。新しいクラスのメンバーを無視するのではなく、あなたの質問は面白いです。 btw。デシリアライゼーションは 'num2'を設定しません。初期値は0だけです。 – dlatikay

答えて

0

OK。私は設定できる振る舞いを変えるためにそれを理解しました

formatter.AssemblyFormat = FormatterAssemblyStyle.Full; 

これは多分恐ろしいことですが。

関連する問題