2
Dictionary<string, AbstractDataObject>
を逆シリアル化したいと思います。 AbstractDataObject
は抽象クラスであり、SomeClass1
とSomeClass2
から継承しています。辞書(文字列)のキー値は、クラスの名前です:JSON推論クラスのタイプは辞書キーに基づいています
{
"StoredData": {
"SomeClass1": {
"Foo": "Test"
},
"SomeClass2": {
"Bar": 123
}
}
}
クラスは(簡体字)、次のようになります。
public class Data
{
public Dictionary<string, AbstractDataObject> StoredData { get; set; }
}
public abstract class AbstractDataObject
{
}
public class SomeClass1 : AbstractDataObject
{
public string Foo { get; set; }
}
public class SomeClass2 : AbstractDataObject
{
public int Bar { get; set; }
}
どのように私は推測するJson.NETを伝えることができますDictionaryキーに基づくクラス型ですか?私は周りを見回してきましたが、私は、この機能
タイプ名の使用は、完全に分離されたクライアント/サーバを可能にするための、シリアライゼーションの典型的な目的に反するため、危険です。明示的な契約があるように設計する方法はありますか? –
@SilasReinagel明示的な契約はどういう意味ですか? – jacobz
たとえば、特定のリモート呼び出しのために、クライアントコードに具体的なデータオブジェクトを使用します。 –