Заполнение перечисления без исключенияC#

Место общения программистов C#
Ответить
Anonymous
 Заполнение перечисления без исключения

Сообщение Anonymous »

В нашем C# .net 4.8 Applicaiton мы попытались использовать opulateObject для десеризации из API. Этот API не под нашим контролем. Теперь разработчик API добавил новое значение Enum, и когда мы пытаемся отобразить его в нашем собственном enum , он сбоят с сообщением, подобным «преобразованию ошибок», «X» в «Enum-y». Теперь мы могли бы настроить наш Enum и продолжать, но это будет только временным исправлением, пока это не повторится в другой части кода. Итак, мы немного искали и нашли конкретное решение. Мы добавили «неизвестную» значение в нашу enum , а затем добавили преобразователь, как это:

Код: Выделить всё

public class AllowedMethodConverter : StringEnumConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.String)
{
if (Enum.TryParse(reader.Value.ToString(), out Method result)) // Here the Method has to be known
return result;
else
return Method.Unknown;
}

return base.ReadJson(reader, objectType, existingValue, serializer);
}
}

[JsonConverter(typeof(AllowedMethodConverter))]
public enum Method
{
Unknown,
Method1,
Method2
}
< /code>
используется в очень простом методе API, где мы получаем строку из API, а затем: < /p>
JsonConvert.PopulateObject(response.Content, userSettings);
, который до сих пор работает нормально, но для этого потребуется один stringenumConverter за enum . Примерно на 40 перечисленных было бы немного много для создания 40 преобразователей, просто чтобы я мог игнорировать некоторые значения, которые не существуют.
имеет кто -то лучшую идею?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»