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); }