假设我有一个模型:
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.NET Web API 服务。我怎样才能做到这一点?
下面的请求将创建一个指定的对象Name
,但Next
命令将为空:
POST http://localhost/api/menus: {"name":"bob","next":{"step":1}}
Returns 201: {"Name":"bob","Next":null}
默认 Web API 绑定程序无法将我的请求参数映射到所需的 C# 类型——当然这是一个棘手的部分。我可以为基于接口的属性使用一些“已知类型”属性,还是有任何其他方法来处理这种情况,可能是自定义模型绑定器?