インターフェイスとして定義されたプロパティを持つクラスがあります。 私のクラスのユーザは、このプロパティを実装するクラス実装をこのプロパティに割り当てることができます。 ディスク上のテキストファイルからこのクラス状態をロードできるようにします。ユーザーは、アプリケーションの操作を制御するために、xmlファイルを手動で変更できる必要があります。インターフェイス型メンバーをシリアル化する方法
クラスをシリアル化しようとすると、インターフェイスをシリアル化できないことがわかります。 シリアライザはプロパティのクラスの構造について知識がなく、インターフェイスを実装していることを知っています。
メンバーのGetTypeを呼び出して、実際のクラスの構造に反映されると思います。これを達成する方法はありますか? 要件を実装する別の方法はありますか?
編集:私の意図を明確化: が、私はこのクラスを考えてみましょう:
class Car
{
IEngine engine
}
class ElectricEngine : IEngine
{
int batteryPrecentageLeft;
}
class InternalCombustionEngine : IEngine
{
int gasLitersLeft;
}
と私はクラスてmyCarをシリアル化するとき、クラスのユーザーが
を持つクラスを持って、I xmlが次のようになることを期待してください。
<Car>
<Engine>
<ElectricEngine>
<batteryPrecentageLeft>70</batteryPrecentageLeft>
</ElectricEngine>
<Engine>
</Car>
です。 –
基本的には、インターフェイスがより適切に見えるので、基本クラスの使用を避けたかったのです。また、ユーザーがどのような具体的な種類のものを使用するかも事前にはわかりません。 (私はXmlIncludeでそれらを宣言する必要があることを理解しています)。ユーザーが使用する可能性のあるクラスの種類を事前に知っていることを避けることはできますか? – itaysk
@Henk、OK私は今質問を理解していると思います。はい、XmlIncludeを使用することを意味します。これは私の提案を無益なものにするでしょう。 –