0

この形式のクラスがありclassA version1, classA version2, classA version3ます..など。これは変更された同じクラスです。各「変更」により、新しいバージョンのクラスが作成されます。各オブジェクトには、派生元のクラスのバージョンを参照するバージョン属性があります。例ObjectA.version =1# から派生したことを意味しますClassA version1

これが私の問題です。オブジェクトのデシリアライズ中に、オブジェクトの作成に使用された特定のバージョンのクラスを使用したいと考えています。たとえば、オブジェクトObjectAをデシリアライズしている場合は、 version=3thenClassA version 3を使用する必要があります。クラスのさまざまなバリエーションすべてのソース コードが格納されています。

これは、最初にオブジェクトを取得してクラスを取得するように見えます。これにアプローチする方法について何か考えはありますか?

4

1 に答える 1

0

3つのオプションがあります。

  1. カスタムシリアル化/逆シリアル化-バージョン情報とクラス情報を最初に配置できます。
  2. すべてのクラスバージョンのすべてのメンバーを含む「ユニオンクラス」を作成し、それを使用して適切なクラスのインスタンスを作成します。
  3. 共通の基本クラスにリファクタリングし、各「バージョン」にそのクラスから継承させます。

オプション3をお勧めします。そうすれば、バージョンがきれいに共存できるからです。

于 2012-04-23T15:23:27.633 に答える