private static object op_Subtraction(object lhs, TypeCode lhsTypeCode,
object rhs, TypeCode rhsTypeCode)
{
IConvertible lhsConvertible = (IConvertible)lhs;
IConvertible rhsConvertible = (IConvertible)rhs;
switch (GetConvertTypeCode(lhsTypeCode, rhsTypeCode))
{
case TypeCode.Decimal:
return lhsConvertible.ToDecimal(null) - rhsConvertible.ToDecimal(null);
case TypeCode.Double:
return lhsConvertible.ToDouble(null) - rhsConvertible.ToDouble(null);
case TypeCode.Single:
return lhsConvertible.ToSingle(null) - rhsConvertible.ToSingle(null);
case TypeCode.UInt64:
return lhsConvertible.ToUInt64(null) - rhsConvertible.ToUInt64(null);
case TypeCode.Int64:
return lhsConvertible.ToInt64(null) - rhsConvertible.ToInt64(null);
case TypeCode.UInt32:
return lhsConvertible.ToUInt32(null) - rhsConvertible.ToUInt32(null);
default:
return lhsConvertible.ToInt32(null) - rhsConvertible.ToInt32(null);
}
}