次のモデルがあるとしましょう。
AnimalModel
DogModel : AnimalModel
CatModel : AnimalModel
ElephantModel : AnimalModel
そして、WebサービスでJSONオブジェクトとしてListを返したいのですが...どうすればこれを最善に行うことができますか?
上記の並べ替えでは、ElephantModelはAnimalModelを継承しますが、AnimalModelにはないさまざまなクラスメンバーが明らかに含まれていることに注意してください。(つまり、TrunkSize)そしてこれがエラーの原因だと思います。
今私は持っています:
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "?query={query}")]
List<AnimalModel> Animals (string query);
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "?query={query}")]
ElephantModel Elephant (string query);
Listのような関数を作って送り返そうとすると、うまくいくようです。最初にそれをJSON文字列にセラライズすると、文字列が渡されますが、その後、もう一度解析する必要があります。
ただし、ElephantModelのみまたはCatModelのみに対してこれを行うと、完全に機能します。シリアル化は不要で、もう一方の端で解析する必要はありません...チャンピオンのように機能します。
子モデルが継承するモデルのリストを送信しようとすると、壊れます。ただし、適切なJSON文字列にシリアル化して送信し、その文字列を受信して解析できる場合は、もっと良いことができるはずです。
これどうやってするの?