繁体   English   中英

在JSON.NET中反序列化接口对象

[英]Deserializing interface objects in JSON.NET

我试图从Web API调用返回一个JSON对象。 我想根据它实现的接口返回这个对象,所以:

response.Content.ReadAsAsync<IThingy>().Result

我收到这个错误:

无法创建IThingy类型的实例。 Type是接口或抽象类,无法实例化。

实际上这与此问题中的问题完全相同,除了我想反序列化实现接口的对象,而不是反序列化其类型实现接口的属性。

我怎样才能进行反序列化?

您需要反序列化为具体类,因为必须定义该类的行为。 你需要一个Thingy : IThingy ,我会这样做:

IThingy result = response.Content.ReadAsAsync<Thingy>().Result;

你为什么要这样做? 接口不定义任何行为,仅定义方法和属性的签名 假设您能够直接反序列化到IThingy并且它有一个方法DoMath(int x, int y) - 将做什么数学运算? 没有定义的行为。 这就是你必须选择一个具体课程的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM