Как заставить ServiceStack сохранять информацию о типе

Я использую 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

Последняя строка вызывает исключение InvalidCastException, потому что поле Animal создано как тип Animal, а не как тип Dog. Могу ли я каким-либо образом заставить ServiceStack сохранить информацию о том, что этот конкретный экземпляр относится к типу Dog?

20
задан larspars 25 May 2012 в 07:50
поделиться