アーキテクチャの助けが少し必要です。私がやってきたことは必ずしも最善のアプローチではないかもしれません。
注意事項:
- これはアンドロイド固有の質問ではありません。
- ただし、Android では、「画面」全体でオブジェクトをシリアル化する必要があります。
次の点を考慮してください。
私は現在、異なる画面間で文字クラスを渡す必要がある Android 用のゲームに取り組んでいます。これを行うには、オブジェクトをシリアル化する必要があります。必要になるさまざまなタイプの文字を考慮して、これらのそれぞれを継承するクラスを作成したいと思います。Character クラスから継承し、コンストラクター内で「名前」や「説明」などのデフォルトを設定したい静的文字がある場合。
現在の実装:
シリアル化されたサブクラス オブジェクトを渡しています。(例:キャラクターのベースを持つ UserCharacter )理想的な状況は、オブジェクトが基本クラスであるため、オブジェクトを逆シリアル化できることですが、それはうまくいかないようです。現時点でこれに対して私が持っている唯一の実用的な解決策は、シリアル化を試みるときに次のことを行うことです:
new XmlSerializer(typeof (Character, new [] { typeof(CharacterUser)}));
これにより、複数のサブタイプを渡すことができます。ただし、これはアプリケーション全体でコードが重複することを意味するだけでなく、新しい文字サブクラスが作成されるたびに、デシリアライズが必要な時点で追加する必要があるため、長期的には実現可能ではありません。私はむしろ、コードを書いて、自分のことをするために残したところで動作させたいと思っています。きっとお分かりいただけると思います。
私が試したもう 1 つのことは、文字オブジェクトで IXmlSerializable を使用し、読み取りと書き込みを独立して処理することです。ただし、これにはリストの実装が正しく機能する必要があると思いますか? 現在、私の ReadXml は呼び出されません。(素晴らしいアイデアですが、今のところうまくいきません)
誰でも私が試すことができるアイデアを持っていますか?
それはかなり未解決の質問だと思います。少し異なるスコープが必要な場合はお知らせください。