Я пытаюсь сериализовать объект экземпляра IAnimal для json с помощью Json.NET. Структура Класс:Простая сериализация интерфейса Json.NET
public class Dog : IAnimal {
public int Width { get; set; }
public double Bark { get; set; }
}
public class Cat : IAnimal {
public int Width { get; set; }
public double Meow { get; set; }
}
public interface IAnimal {
int Width { get; set; }
}
public class AnimalContainer {
public IAnimal Animal { get; set; }
}
Пробовал этот путь (пожалуйста, обратите внимание, я использовать «TypeNameHandling.Auto», как я нашел в других потоках):
public void IAnimal_ShouldBeJsonSerializable() {
var animal = new AnimalContainer {Animal = new Dog {Bark = 5, Width = 2}};
var json = JsonConvert.SerializeObject(animal,
new JsonSerializerSettings{TypeNameHandling = TypeNameHandling.Auto});
var deserializedAnimal = JsonConvert.DeserializeObject<AnimalContainer>(json);
}
но бросает мне исключение, что «не удалось создать экземпляр типа IAnimal, Type является интерфейсом или абстрактным классом и не может быть создан ». Но json содержит информацию о конкретном типе!
Как я могу заставить его работать?
http://stackoverflow.com/questions/24644464/json-net-type-is-an-interface-or-abstract-class-and-cannot-be-instantiated –
Ваш '' Animals' есть Width' ??? – Shiva