我已经回顾了我在这里可以找到的所有类似文章,并尝试了任何看起来可能无法成功的事情(因为我现在提出这个问题)。
我有一个带有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属性的任何建议吗?
答案 0 :(得分:1)
正确。如果您尝试反序列化为List<ISomething>
,那么它将无效。原因是反序列化操作不知道您希望实际创建哪个ISomething(您不能初始化ISomething,因为它不是具体的类)。您需要更改服务接口以显示列表的具体类。 (即List<Something>
)。