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