WebAPI 2.0无法对List<T>属性进行反序列化

3

我已经查阅了这里可以找到的所有类似文章,并尝试了任何看起来可能有效的方法,但都没有成功(显然因为我现在正在提问)。

我有一个WebAPI 2.0控制器,其中包含一个POST操作,该操作接受一个名为Reservation的对象。 除其他外,此对象包含名为Items的属性,其类型为EquipmentItems。 正如您所想象的那样,这是一个列表属性。 我通过PostAsJsonAsync("api/Reservation", reservation).Result将预订对象发送过去(如果对任何人有用的话)。

当我进入API控制器时,Reservation对象完全填充了除EquipmentItems属性之外的所有内容。

为了全面披露,Reservation类中的Items属性实际上被定义为一个List,其中T是IItemData接口。 EquimpentItem继承自IItemData,因此不确定是否会复杂化问题。

本机控制器反序列化程序不能处理T为接口的列表吗?

我知道可以将List定义为常规数组。 这非常有效,但我有其他要求,因此我选择使用List。

您有关于如何正确反序列化该List属性的任何建议吗?

1个回答

1

正确。如果您试图将其反序列化为 List<ISomething>,那么它将无法工作。原因是反序列化操作不知道您希望创建哪个实际的 ISomething(您不能初始化 ISomething,因为它不是一个具体类)。您需要更改服务接口以公开列表的具体类(即 List<Something>)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接