我已经查看了我可以在这里找到的所有类似文章,并尝试了任何看起来可能都没有成功的文章(很明显,因为我现在正在问这个问题)。
我有一个带有 POST 操作的 webAPI 2.0 Controller ,该操作接收 Reservation
类型的对象。此对象包含一个名为 Items
的属性,类型为 EquipmentItems
。可以想象,这是一个 List 属性。我发送预订对象(使用 PostAsJsonAsync("api/Reservation", reservation).Result
如果它对任何人都重要)。
当我进入 API Controller 时,Reservation
对象完全填充了除 EquipmentItems
属性之外的所有内容。
本着完全公开的精神,Reservation
类中的 Items
属性实际上定义为一个列表,其中 T 是 IItemData
接口(interface). EquimpentItem
继承自 IItemData
,所以不确定这是否会使事情复杂化。
本地 Controller 解串器不能处理 T 是接口(interface)的列表吗?
我所知道的是将列表定义为常规数组。这非常有效,但我还有其他要求引导我使用 List。
关于如何正确反序列化 List 属性的任何建议?
最佳答案
正确。如果您尝试反序列化为 List<ISomething>
,那么它将不起作用。原因是反序列化操作不知道您希望实际创建哪个 ISomething(您不能初始化 ISomething,因为它不是具体类)。您将需要更改服务接口(interface)以公开列表的具体类。 (即 List<Something>
)。
关于c# - WebAPI 2.0 Post 未反序列化 List<T> 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008864/