コード例 #1
0
        public TEnum Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            if (reader.ReadIsNull())
            {
                return(null);
            }

            return(SmartFlagEnum <TEnum, TValue> .DeserializeValue(ReadValue(ref reader)));
        }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
        /// <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);
            }
        }