vknet/vk

Мэппинг enum-ов для отсутствующих значений

sel1 opened this issue · 2 comments

sel1 commented

ВК добавляет новые значения во всевозможные enum-ы быстрее, чем они появляются в этом проекте. Если нового значения нет в проетке - ответ от ВК не парсится с ошибкой.
Вот примеры:
Error converting value "photo" to type 'VkNet.Enums.StringEnums.PostType'. Path 'response.items[6].copy_history[0].post_type'
Error converting value "admin_app" to type 'VkNet.Enums.StringEnums.Platform'. Path 'response.items[73].post_source.platform'
Error converting value "instagram" to type 'VkNet.Enums.StringEnums.Platform'. Path 'response.items[73].post_source.platform'
Причем иногда приходят такие значения, которых даже в документации vk api нет.
Из-за этого у меня ни разу не получилось добиться полностю рабочей версии после 1.47.

В связи с этим такое предложение:

  • Добавить во все enum-ы, участвующие в десериализации ответа от ВК значение Unknown.
  • При десериализации enum-а из JSON если подходящего значения не нашлось, возвращать Unknown

Предложение годное обдумывал уже его, но пока решения не принял

На данный момент, все StringEnum помечены как nullable, при отсутствии значения - null.
Может кто придумает, как добавить логгер в конвертер или другой вариант.

//_logger.LogError($"\nПОЖАЛУЙСТА ОТКРОЙТЕ ISSUE: {$"https://github.com/vknet/vk/issues/new?title=Add%20new%20value%20to%20{objectType.GenericTypeArguments.FirstOrDefault()}&body={reader.Value}"}\n" + e.Message);