我有以下类(名称和属性名称已更改):
[KnownType(typeof(Module))]
[DataContract]
public class BaseModule
{
[DataMember]
public int Id { get; set; }
}
[DataContract]
public class Module : BaseModule
{
[DataMember]
public string Name { get; set; }
}
[DataContract]
public class ModuleContainer
{
[DataMember]
public ModuleBase mod { get; set; }
}
所以,使用时:
var json = @"{\"mod\":{
\"Name\":\"The Name\",
\"Id\":10
}}";
var result = JsonConvert.DeserializeObject<ModuleContainer>(json);
由此产生的对象&#34; mod&#34;成员无法成功转换为类型模块,并且再次序列化该对象不会产生&#34;名称&#34;会员。似乎Json.Net无法识别继承的类型(Module),而是给了我一个&#34; ModuleBase&#34;对象
我有相当多的继承类(都是不同的,并且都被ModuleBase上的KnownType所涵盖)。有没有办法让我说服JsonConvert获取合适的类型?
如果您需要更多信息或者令人困惑,请告诉我。