3

私は結果なしでこれを達成する方法を一日中探していました...

オブジェクトをデシリアライズしようとしています。私がそれをシリアル化したとき、obsoleteBool と呼ばれるブールがありました。クラスの新しいバージョンでは、この bool を削除しましたが、デシリアライズ時にエラーが発生しました (フィールド "obsoleteBool" が見つかりません)。

古いバージョンのクラスと新しいバージョンのクラスの間に新しいフィールドを追加するのは非常に簡単です。[OptionalField] 属性を使用しなくても...しかし、クラスの古いバージョンと新しいバージョンの間でフィールドの削除を管理するにはどうすればよいですか?

4

1 に答える 1

0

考えられる解決策は 3 つあります。

  • 最も簡単な方法: 古いフィールドをクラスの新しいバージョンに追加する
  • カスタム コード: カスタム デシリアライザーを実装する
  • 余分な作業: シリアル化されたすべてのクラスを調べ、それらを古い形式で読み取り、新しいクラス定義でそれらを再シリアル化する変換プログラムを作成します。

ビジネス価値の観点からは、おそらく最初のオプションが望ましいでしょう。

于 2014-08-03T19:49:05.470 に答える