public TEnum Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver) { if (reader.ReadIsNull()) { return(null); } return(SmartFlagEnum <TEnum, TValue> .DeserializeValue(ReadValue(ref reader))); }
private TEnum GetFromValue(TValue value) { try { return(SmartFlagEnum <TEnum, TValue> .DeserializeValue(value)); } catch (Exception ex) { throw new JsonException($"Error converting value '{value}' to a smart flag enum.", ex); } }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="objectType"></param> /// <param name="existingValue"></param> /// <param name="hasExistingValue"></param> /// <param name="serializer"></param> /// <returns></returns> public override TEnum ReadJson(JsonReader reader, Type objectType, TEnum existingValue, bool hasExistingValue, JsonSerializer serializer) { try { TValue value; if (reader.TokenType == JsonToken.Integer && typeof(TValue) != typeof(long) && typeof(TValue) != typeof(bool)) { value = (TValue)Convert.ChangeType(reader.Value, typeof(TValue)); } else { value = (TValue)reader.Value; } return(SmartFlagEnum <TEnum, TValue> .DeserializeValue(value)); } catch (Exception ex) { throw new JsonSerializationException($"Error converting {reader.Value ?? "Null"} to {objectType.Name}.", ex); } }