Скажем, у нас есть такой класс:
public class Person
{
[JsonConstructor]
public Person(string name, DayOfWeek bornOnDay) => (Name, BornOnDay) = (name, bornOnDay);
public string Name { get; protected set; }
public DayOfWeek BornOnDay { get; protected set; }
}
И конечная точка, подобная этой:
[HttpPost]
[Route("api/people")]
public IHttpActionResult PostPerson([FromBody]List<Person> people)
{
// whatever
}
Я заметил, что если я сделаю опечатку в *Тип 1007 * при выполнении запроса - ошибки не возникает, только объект, имеющий ошибочный enum
, не будет десериализован.
Например, тело запроса может выглядеть следующим образом:
[{"name":"John", "bornOnDay":"Moonday",},
{"name":"Mark", "bornOnDay":"Friday",},]
Конечная точка получит список, содержащий одного Person
Марка, родившегося в пятницу.
Я бы хотел, чтобы операция post выполнялась полностью или не выполнялась, не только с объектами без опечаток enum
. Есть ли способ сделать это без получения string
вместоDayOfWeek
, а затем с помощью Enum.TryParse(...)
определить, что ввод был ошибочным?
Редактировать:
Я на самом деле хочу, чтобы ошибка произошла и была обнаруживаемой, чтобы я мог вернуть 400
код клиенту.