6

MSDNで彼らは書いています

OptionalFieldAttribute 属性をフィールドに適用することで、フィールドをオプションとしてマークできます。逆シリアル化中にオプションのデータが欠落している場合、シリアル化エンジンは欠落を無視し、例外をスローしません。

例外を取得できません。クラスを作成し、SerializableAttribute でマークし、BinaryFormatter でオブジェクトをシリアル化し、状態をディスク上のファイルに永続化してから、OptionalFieldAttribute でマークしなかった 2 つのフィールドをクラスに追加し、逆シリアル化を試みました。ディスクに永続化したばかりのオブジェクトを返します。例外がスローされなかったことに驚いていますか?

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 に答える