private static object GetParamWithSystemType()

in src/Core/Parsers/ODataASTVisitor.cs [116:164]


        private static object GetParamWithSystemType(string param, IEdmTypeReference edmType)
        {
            try
            {
                switch (edmType.PrimitiveKind())
                {
                    case EdmPrimitiveTypeKind.Guid:
                        return Guid.Parse(param);
                    case EdmPrimitiveTypeKind.Byte:
                        return byte.Parse(param);
                    case EdmPrimitiveTypeKind.Int16:
                        return short.Parse(param);
                    case EdmPrimitiveTypeKind.Int32:
                        return int.Parse(param);
                    case EdmPrimitiveTypeKind.Int64:
                        return long.Parse(param);
                    case EdmPrimitiveTypeKind.Single:
                        return float.Parse(param);
                    case EdmPrimitiveTypeKind.Double:
                        return double.Parse(param);
                    case EdmPrimitiveTypeKind.Decimal:
                        return decimal.Parse(param);
                    case EdmPrimitiveTypeKind.Boolean:
                        return bool.Parse(param);
                    case EdmPrimitiveTypeKind.Date:
                        return Date.Parse(param);
                    case EdmPrimitiveTypeKind.DateTimeOffset:
                        return DateTimeOffset.Parse(param);
                    case EdmPrimitiveTypeKind.String:
                        return param;
                    case EdmPrimitiveTypeKind.TimeOfDay:
                        return TimeOnly.Parse(param);
                    default:
                        // should never happen due to the config being validated for correct types
                        throw new NotSupportedException($"{edmType} is not supported");
                }
            }
            catch (Exception e)
            {
                if (e is FormatException ||
                    e is ArgumentNullException ||
                    e is OverflowException)
                {
                    throw new ArgumentException($"Parameter \"{param}\" cannot be resolved as type \"{edmType}\".");
                }

                throw;
            }
        }