Exemple #1
0
        private static JTokenType GetValueType(JTokenType?current, object value)
        {
            if (value == null || value == DBNull.Value)
            {
                return(JTokenType.Null);
            }
            switch (value)
            {
            case string _:
                return(JValue.GetStringValueType(current));

            case long _:
            case int _:
            case short _:
            case sbyte _:
            case ulong _:
            case uint _:
            case ushort _:
            case byte _:
                return(JTokenType.Integer);

            case Enum _:
                return(JTokenType.Integer);

            case double _:
            case float _:
            case Decimal _:
                return(JTokenType.Float);

            case DateTime _:
                return(JTokenType.Date);

            case DateTimeOffset _:
                return(JTokenType.Date);

            case byte[] _:
                return(JTokenType.Bytes);

            case bool _:
                return(JTokenType.Boolean);

            case Guid _:
                return(JTokenType.Guid);

            default:
                if ((object)(value as Uri) != null)
                {
                    return(JTokenType.Uri);
                }
                if (value is TimeSpan)
                {
                    return(JTokenType.TimeSpan);
                }
                throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith((IFormatProvider)CultureInfo.InvariantCulture, (object)value.GetType()));
            }
        }
 private static JTokenType GetValueType(JTokenType?current, object value)
 {
     if (value == null)
     {
         return(JTokenType.Null);
     }
     if (value == DBNull.Value)
     {
         return(JTokenType.Null);
     }
     if (value is string)
     {
         return(JValue.GetStringValueType(current));
     }
     if (value is long || value is int || value is short || value is sbyte || value is ulong || value is uint || value is ushort || value is byte)
     {
         return(JTokenType.Integer);
     }
     if (value is Enum)
     {
         return(JTokenType.Integer);
     }
     if (value is double || value is float || value is decimal)
     {
         return(JTokenType.Float);
     }
     if (value is DateTime)
     {
         return(JTokenType.Date);
     }
     if (value is DateTimeOffset)
     {
         return(JTokenType.Date);
     }
     if (value is byte[])
     {
         return(JTokenType.Bytes);
     }
     if (value is bool)
     {
         return(JTokenType.Boolean);
     }
     if (value is Guid)
     {
         return(JTokenType.Guid);
     }
     if (value is Uri)
     {
         return(JTokenType.Uri);
     }
     if (!(value is TimeSpan))
     {
         throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
     }
     return(JTokenType.TimeSpan);
 }