В нашем приложении ASP.net Core Web API я ищу способ отловить ошибки привязки, когда мой метод контроллера принимает сложный объект, который имеет свойство ENUM, когда ENUM де / сериализуются как строки.
например.
class Person
{
public string Name {get; set;}
public SexEnum Sex {get; set;}
}
enum SexEnum
{
Male,
Female
}
Мы используем всю систему StringEnumConverter
, поэтому сериализованный JSON экземпляр Person
выглядит так:
{
"name": "Ann",
"sex": "female"
}
Теперь, если я опубликую этот JSON (обратите внимание на опечатку в свойстве sex
):
{
"name": "Ann",
"sex": "femal"
}
весь объект, полученный методом контроллера, равен NULL, поскольку привязка не удалась.
Я бы хотел отловить эту ошибку привязки и вместо того, чтобы конвейер входил в контроллер, как будто ничего не случилось, возвращать клиенту BAD REQUEST, включая детали того, какое значение свойства не удалось связать.
Я знаю тип, в который пытаюсь десериализоваться, знаю тип свойства, который пытаюсь десериализовать, и вижу, что значение не разбирается в тип. Поэтому я думаю, что должен быть способ предоставить эту информацию клиенту. Я просто не знаю, где и как это подключить.
Я бы хотел, чтобы решение было общесистемным, чтобы охватить все перечисления без необходимости устанавливать атрибуты в свойствах модели или самих перечислений. (Это потому, что мы распространяем наши модели API в виде пакета nuget, который не может иметь никаких зависимостей.)