c# - WebAPI 2.0 Post 未反序列化 List<T> 属性

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

我已经查看了我可以在这里找到的所有类似文章,并尝试了任何看起来可能都没有成功的文章(很明显,因为我现在正在问这个问题)。

我有一个带有 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/

相关文章:

c# - WPF 使用凭据启动浏览器

asp.net-web-api - AttributeRouting 参数路由与字符串路由冲突

asp.net-mvc-5 - Web API 和 MVC 5 Controller 上的 CORS : Upload images with fetch and FormData

java - jackson 反序列化具有相同名称的xml字段

java - 如何使用 jaxb 读取属性?

c# - 通过参数获取两个对象之间的匹配百分比

c# - ObservableCollection 以及存储库

angularjs - 为什么默认禁用 CORS?

java - XStream - 加载自定义 XML

c# - Code First 问题,使用西里尔文播种数据