2017-03-24 7 views
3

私はここで見つけることができるすべての類似の記事を見直し、成功していないように見えるものを試しました(私は今質問しています)。WebAPI 2.0非直列化リストの投稿<T>プロパティ

タイプReservationのオブジェクトを取り込むPOSTアクションを持つwebAPI 2.0コントローラがあります。このオブジェクトには、とりわけItemsと呼ばれるプロパティがあり、タイプはEquipmentItemsです。あなたが想像しているように、これはListプロパティです。私は予約オブジェクトを送信します(誰にでも問題がある場合はPostAsJsonAsync("api/Reservation", reservation).Resultを使用)。

私がAPIコントローラに着陸すると、Reservationオブジェクトには、EquipmentItemsプロパティにあるものを除いてすべてのオブジェクトが完全に埋め込まれます。

完全開示の精神で、Reservationクラス内のItemsプロパティは、実際にはTがIItemDataインターフェイスであるリストとして定義されます。 EquimpentItemIItemData thoを継承しているため、それが問題を複雑にするかどうかはわかりません。

ネイティブコントローラのデシリアライザは、TがインターフェイスであるListを処理できませんか?

私が知っていることは、Listを通常の配列として定義することです。それはうまくいきますが、私はリストを使用するために私をナビゲートした他の要件があります。

リストのプロパティを正しくシリアル化しないようにするにはどうすればよいですか?

答えて

1

修正。 List<ISomething>に逆シリアル化しようとしている場合、動作しません。その理由は、デシリアライゼーション操作では、実際に作成したいものがわからないためです(具体的なクラスではないため、あなたは何かを初期化できません)。リストの具体的なクラスを公開するには、サービスインタフェースを変更する必要があります。 (すなわち、List<Something>)。

関連する問題