| @@ -34,8 +34,8 @@ namespace Discord | |||||
| get => _value; | get => _value; | ||||
| set | set | ||||
| { | { | ||||
| if (value != null && value is not int && value is not string) | |||||
| throw new ArgumentException("The value of a choice must be a string or int!"); | |||||
| if (value != null && value is not string && !value.IsNumericType()) | |||||
| throw new ArgumentException("The value of a choice must be a string or a numeric type!"); | |||||
| _value = value; | _value = value; | ||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,32 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| namespace Discord | |||||
| { | |||||
| internal static class ObjectExtensions | |||||
| { | |||||
| public static bool IsNumericType(this object o) | |||||
| { | |||||
| switch (Type.GetTypeCode(o.GetType())) | |||||
| { | |||||
| case TypeCode.Byte: | |||||
| case TypeCode.SByte: | |||||
| case TypeCode.UInt16: | |||||
| case TypeCode.UInt32: | |||||
| case TypeCode.UInt64: | |||||
| case TypeCode.Int16: | |||||
| case TypeCode.Int32: | |||||
| case TypeCode.Int64: | |||||
| case TypeCode.Decimal: | |||||
| case TypeCode.Double: | |||||
| case TypeCode.Single: | |||||
| return true; | |||||
| default: | |||||
| return false; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||