ServiceStack を使用して、一部のオブジェクトを JSON にシリアライズおよびデシリアライズしています。次の例を検討してください。
public class Container
{
public Animal Animal { get; set; }
}
public class Animal
{
}
public class Dog : Animal
{
public void Speak() { Console.WriteLine("Woof!"); }
}
var container = new Container { Animal = new Dog() };
var json = JsonSerializer.SerializeToString(container);
var container2 = JsonSerializer.DeserializeFromString<Container>(json);
((Dog)container.Animal).Speak(); //Works
((Dog)container2.Animal).Speak(); //InvalidCastException
Animal フィールドは Dog 型ではなく Animal 型としてインスタンス化されるため、最後の行は InvalidCastException をスローします。この特定のインスタンスが Dog タイプであったという情報を保持するように ServiceStack に指示する方法はありますか?