我有一个类定义,它包含一个返回一个接口的属性。
public class Foo { public int Number { get; set; } public ISomething Thing { get; set; } }
尝试使用Json.NET序列化Foo类给我一个错误消息,像“无法创建类型为’ISomething’的实例。ISomething可能是一个接口或抽象类。
是否有一个Json.NET属性或转换器,让我指定一个具体的Something类在反序列化过程中使用?
你可以用
Json.NET做的事情之一是:
var settings = new JsonSerializerSettings(); settings.TypeNameHandling = TypeNameHandling.Objects; JsonConvert.SerializeObject(entity,Formatting.Indented,settings);
TypeNameHandling标志将为JSON添加一个$ type属性,这允许Json.NET知道需要将对象反序列化为哪个具体类型。这允许你反序列化一个对象,同时仍然实现一个接口或抽象基类。
然而,缺点是,这是非常Json.NET特定的。 $ type将是一个完全限定类型,所以如果你使用类型info序列化它,解串器需要能够理解它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。