基本プロジェクトには、抽象基本クラス Foo が含まれています。別のクライアント プロジェクトには、その基本クラスを実装するクラスがあります。
基本クラスでいくつかのメソッドを呼び出して、具体的なクラスのインスタンスをシリアル化および復元したいと思います。
// In the base project:
public abstract class Foo
{
abstract void Save (string path);
abstract Foo Load (string path);
}
逆シリアル化の時点で、必要なすべてのクラスが存在すると想定できます。何らかの方法で可能であれば、シリアル化は XML で行う必要があります。基本クラスに IXmlSerializable を実装させることは可能です。
ここでちょっと立ち往生しています。私の理解が正しければ、これは[XmlInclude(typeof(UnknownClass))]
すべての実装クラスの基本クラスに を追加することによってのみ可能ですが、実装クラスは不明です!
これを行う方法はありますか?リフレクションの経験はありませんが、リフレクションを使用した回答も歓迎します。
編集:問題はデシリアライズです。シリアル化するだけで簡単になります。:-)