Список <Enum>не может десериализоваться, если значения не предоставлены - PullRequest
0 голосов
/ 05 ноября 2019

В классе Account, свойство Industry представляет собой коллекцию типа Enum Industry

. Учетная запись может принадлежать нескольким отраслям.

public class Account
{

[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
public List<Industry> Industrys { get; set; } 

}

Public enum Industry
{
AerospaceAirlines = 0,
            Agriculture = 1,
            Apparel = 2,
            Automotive = 3,
            Banking = 4,
            BioTechnology = 5,
            Chemicals = 6,
            Communications = 7,
            Construction = 8,
            Consultancy = 9,
            ConsumerDurables = 10,
            Education = 11,
}

при создании новой учетной записи. не обязательно добавлять индустрию. если в объекте запроса не указаны значения для этого свойства Industrys, происходит сбой.

возникает ошибка при десериализации "Значение не может быть нулевым. \ r \ nПараметр имени: источник"

Ошибка возникает, когда средство связывания по умолчанию пытается заполнить объект accountModel.

[HttpPost]
        public async Task<IActionResult> Post([FromBody]AccountModel accountModel)
        {
            if (accountModel == null)
            {
                throw new ApiException(ApplicationErrorCode.FieldRequiredError, "request cannot be empty");
            }
       }

Как разрешить отправителю отправлять запрос без предоставления Industry?

1 Ответ

2 голосов
/ 05 ноября 2019

Изменение:

public class Account
{

[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
public List<Industry> Industrys { get; set; } 

}

на:

public class Account
{

[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
public List<Industry> Industrys { get; set; } = new List<Industry>();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...