Теперь разработчик API добавил новое значение перечисления, и когда мы пытаемся отобразить его в нашем собственном переходе он сбои с таким сообщением, как < /p>
Ошибка преобразования Мог бы скорректировать наш перечисление и продолжать, но это будет только временным исправлением, пока это не повторится снова в другой части кода. Мы немного искали и нашли конкретное решение. Мы добавили значение «неизвестного» в наш перечисление, а затем добавили преобразователь, как это: < /p>
Код: Выделить всё
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);
У кого -нибудь есть лучше ?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -exception
Мобильная версия