モデルがあるとします。
public class Menu
{
public string Name { get; set; }
public IMenuCommand Next { get; set; }
}
IMenuCommand
次のようなさまざまな実装が可能です。
public class NextStepCommand : IMenuCommand
{
public int Step { get; set; }
}
public class VoiceCommand : IMenuCommand
{
public string Message { get; set; }
}
また、さまざまなコマンドを含むメニューをASP.NETWebAPIサービスにPOSTしたいと思います。どうやってやるの?
以下のリクエストは、指定されたオブジェクトを作成しますName
が、Next
コマンドはnullになります。
POST http://localhost/api/menus: {"name":"bob","next":{"step":1}}
Returns 201: {"Name":"bob","Next":null}
デフォルトのWebAPIバインダーは、要求パラメーターを必要なC#タイプにマップできません。もちろん、これは注意が必要な部分です。インターフェイスベースのプロパティに「既知のタイプ」属性を使用できますか、それともこのケースを処理する他のアプローチ、おそらくカスタムモデルバインダーはありますか?