public static double ConvertUnit(IUnit sourceUnit, IUnit destinationUnit, double valueToConvert) { // check if they are the same type if (sourceUnit == destinationUnit) return valueToConvert; // if we are converting zero, it's zero if (valueToConvert == 0) return 0; // convert sourceUnits to base var baseValue = sourceUnit.ConvertToBaseUnit(valueToConvert); // convert base to destination var destination = destinationUnit.ConvertFromBaseUnit(baseValue); return destination; }