Asp.net web api 不同类型的WebApi2 FromBody RequestMessage

Asp.net web api 不同类型的WebApi2 FromBody RequestMessage,asp.net-web-api,Asp.net Web Api,我正在设计一个ASP.NETWebAPI 2解决方案,它可能会从[Frombody]接收以下一种形式的请求消息 我应该如何设计绑定到传入请求消息的具体类?任何建议都将不胜感激 <?xml version="1.0" encoding="utf-8"?> <RequestMessage> <Shapes> <RectangleInfo></RectangleInfo> </Shapes> </Reques

我正在设计一个ASP.NETWebAPI 2解决方案,它可能会从[Frombody]接收以下一种形式的请求消息

我应该如何设计绑定到传入请求消息的具体类?任何建议都将不胜感激

<?xml version="1.0" encoding="utf-8"?>
<RequestMessage>
  <Shapes>
    <RectangleInfo></RectangleInfo>
  </Shapes>
</RequestMessage>

or

<RequestMessage>
  <Shapes>
    <CicleInfo></CicleInfo>
  </Shapes>
</RequestMessage>

or

<RequestMessage>
  <Shapes>
    <SquareInfo></SquareInfo>
  </Shapes>
</RequestMessage>

或
或

考虑使用ModelBinder界面并返回正确类型的IShape:矩形、圆形或方形。完成后,控制器方法将如下所示:

    public Task<HttpResponseMessage> GetShape(
        [ModelBinder] IShape shape = null) { ... }
也许有一天你会补充

     public class CircleShape : EllipseShape { ... circle special case of ellipse properties ... }
     public class EllipseShape : Shape { ... ellipse properties ... }

也许答案与您想象的不同,但您说了
任何建议
,这可能会对您很有帮助。

非常感谢您的指导。我将在IModelBinder界面上进行探索,以实现这一点。
     public abstract class Shape : IShape { .. properties for all shapes ... }
     public class SquareShape : RectangleShape { ... special case rectangle syntactic sugar that makes it a square ... }
     public class RectangleShape : Shape { ... rectangle properties }
     public class CicleShape : Shape { ... cicle properties }
     public class CircleShape : EllipseShape { ... circle special case of ellipse properties ... }
     public class EllipseShape : Shape { ... ellipse properties ... }