我想使用Json.NET將IAnimal實例對象序列化爲json。 類結構: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 – 2014-10-27 23:16:38
你'Animals'有' Width' ??? – Shiva 2014-10-27 23:27:48