我正在使用 .NET 为 Windows Store 应用程序编写一个多元化框架。对于自定义格式化程序string Format(string format, params object[] args)
,我有以下代码:
public static bool IsExactlyOne(object n)
{
if (n is Int16)
{
return (Int16)n == 1;
}
if (n is int) // Int32
{
return (int)n == 1;
}
if (n is long) // Int64
{
return (long)n == 1L;
}
if (n is UInt16)
{
return (UInt16)n == 1U;
}
if (n is uint) // UInt32
{
return (uint)n == 1U;
}
if (n is ulong) // UInt64
{
return (ulong)n == 1UL;
}
if (n is byte)
{
return (byte)n == 1;
}
if (n is sbyte)
{
return (sbyte)n == 1;
}
if (n is float)
{
return (float)n == 1.0F;
}
if (n is double)
{
return (double)n == 1.0D;
}
if (n is decimal)
{
return (decimal)n == 1.0M;
}
throw new ArgumentException("Unsupported type");
}
如您所见,它非常冗长。有什么方法可以简化这个吗?请注意:IConvertible
不适用于Windows 应用商店应用程序。