[英]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.