public static Number Calculate(IBinaryOperandCalculator cal, Number n1, Number n2) { if (n1 == null || n2 == null) { return(0); } switch (n1.TypeCode) { case NumberTypeCode.Int32: return(cal.Calculate((int)n1, (int)n2)); case NumberTypeCode.Int64: return(cal.Calculate((long)n1, (long)n2)); case NumberTypeCode.BigInteger: return(cal.Calculate((BigInteger)n1, (BigInteger)n2)); case NumberTypeCode.Double: case NumberTypeCode.Decimal: case NumberTypeCode.BigDecimal: return(cal.Calculate((BigDecimal)n1, (BigDecimal)n2)); } throw new ArgumentException("unsupported add calculate: " + n1.GetType()); }
public static Number Calculate(IBinaryOperandCalculator cal, Number n1, Number n2) { if (n1 == null || n2 == null) { return 0; } switch (n1.TypeCode) { case NumberTypeCode.Int32: return cal.Calculate((int)n1, (int)n2); case NumberTypeCode.Int64: return cal.Calculate((long)n1, (long)n2); case NumberTypeCode.BigInteger: return cal.Calculate((BigInteger)n1, (BigInteger)n2); case NumberTypeCode.Double: case NumberTypeCode.Decimal: case NumberTypeCode.BigDecimal: return cal.Calculate((BigDecimal)n1, (BigDecimal)n2); } throw new ArgumentException("unsupported add calculate: " + n1.GetType()); }