ASP.NET Advanced [FromBody] отображение - PullRequest
0 голосов
/ 14 сентября 2018

Рассмотрим следующие модели:

public class Shape {
   public Guid Id {get;set;} 
   public string Color {get;set;}
}

public class Circle : Shape {
   public int Contour {get;set;}
}

public class Rectangle : Shape {
   public bool IsSquare {get;set;}
}

Это просто демонстрация, у меня есть базовый класс с производными классами с различными свойствами.

В моем клиенте Javascript у меня есть List с различными формами.

const shapes = [
   { id: ..., color: 'red', contour: 23 },
   { id: ..., color: 'blue', isSquare: false }
];

Когда я отправляю эти данные на сервер, мне нужно знать, является ли это Circle илиRectangle.В моем веб-API определена следующая конечная точка.

[HttpPost("shapes")]
public IActionResult Post([FromBody] IEnumerable<Shape> shapes) 
{
   foreach(var shape in shapes) 
   {
      // how do I know if shape is of type Square/Circle?
      // and how do I cast the shape to the corresponding type?
      if (shape is Circle) 
      {
          shapeService.InsertCircle(shape as Circle);
      }
      else if (shape is Rectangle) 
      {
          shapeService.InsertRectangle(shape as Rectangle);
      }
   }
   return Ok();
}

Итак, вопрос в том, возможно ли привести формы к соответствующим им типам, когда я нахожусь в функции контроллера?

...