【发布时间】:2014-10-28 07:25:20
【问题描述】:
我正在尝试使用 Json.NET 将 IAnimal 实例对象序列化为 json。 类结构:
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包含了具体的类型信息!
我怎样才能让它工作?
【问题讨论】:
-
你的
Animals有Width???