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