WebAPI 2.0发布未反序列化列表<t>属性

时间:2017-03-24 20:46:46

标签: c# asp.net-web-api2 xml-deserialization

我已经回顾了我在这里可以找到的所有类似文章,并尝试了任何看起来可能无法成功的事情(因为我现在提出这个问题)。

我有一个带有POST操作的webAPI 2.0控制器,它接受类型为Reservation的对象。除其他外,此对象包含名为Items的属性,其类型为EquipmentItems。可以想象,这是一个List属性。我发送预订对象(如果对任何人都很重要,请使用PostAsJsonAsync("api/Reservation", reservation).Result。)

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

本着完全公开的精神,Items类中的Reservation属性实际上被定义为一个列表,其中T是IItemData接口。 EquimpentItem继承自IItemData,所以不确定这是否会使事情变得复杂。

本机控制器反序列化器是否可以处理T是接口的List?

我所知道的是将List定义为常规数组。这非常有效,但我有其他要求导致我使用List。

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

1 个答案:

答案 0 :(得分:1)

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