我正在尝试从Web API调用返回JSON对象。我想根据它实现的接口返回这个对象,所以:
response.Content.ReadAsAsync<IThingy>().Result
我收到此错误:
无法创建IThingy类型的实例。 Type是接口或抽象类,无法实例化。
实际上这和this question中的问题一样,除了我想反序列化实现接口的对象,而不是反序列化其类型实现接口的属性。
如何进行反序列化?
答案 0 :(得分:3)
您需要反序列化为具体类,因为必须定义该类的行为。你需要Thingy : IThingy
,我会这样做:
IThingy result = response.Content.ReadAsAsync<Thingy>().Result;
你为什么要这样做?接口定义方法和属性的无行为,仅签名。假设你能够直接反序列化到IThingy
并且它有一个方法DoMath(int x, int y)
- 会做什么数学运算?没有定义的行为。这就是你必须选择具体课程的原因。