とりわけ、オブジェクトとタイプを取り込んで、オブジェクトをそのタイプに変換する関数があります。ただし、入力オブジェクトは多くの場合doubleであり、intのバリエーション(uint、longなど)を入力します。ラウンド数がdouble(4.0など)として渡された場合はこれを機能させたいのですが、(4.3)で10進数が渡された場合は例外をスローします。Typeが何らかの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.");
}
ありがとう。