У меня есть функция, которая, помимо прочего, принимает объект и тип и преобразует объект в этот тип. Тем не менее, входной объект часто является двойным, и тип некоторого варианта int (uint, long и т. Д.). Я хочу, чтобы это работало, если круглое число передается в виде двойного числа (например, 4.0), но для исключения, если в (4.3) передан десятичный. Есть ли какой-нибудь более элегантный способ проверить, является ли тип неким типом int?
if (inObject is double && (targetType == typeof (int)
|| targetType == typeof (uint)
|| targetType == typeof (long)
|| targetType == typeof (ulong)
|| targetType == typeof (short)
|| targetType == typeof (ushort)))
{
double input = (double) inObject;
if (Math.Truncate(input) != input)
throw new ArgumentException("Input was not an integer.");
}
Спасибо.