/// <summary> /// Converts from 1 distance to another. By default, converts to Meter and then back to the other measurements /// </summary> /// <param name="value">The value of the from unit</param> /// <param name="from">From unit can be anything listed in DistanceUnits</param> /// <param name="to">To unit can be anything listed in DistanceUnits</param> /// <returns></returns> public override decimal Convert(decimal value, Enum from, Enum to) { CapacityDigitalUnits fromDu = (CapacityDigitalUnits)from; CapacityDigitalUnits toDu = (CapacityDigitalUnits)to; decimal conversion; if (!conversionMap.TryGetValue(fromDu, out conversion)) { throw new InvalidUnitTypeException(fromDu.ToString()); } // Convert from to Meter value *= conversion; // Convert meter to to. if (!toDu.IsBit() && !conversionMap.TryGetValue(toDu, out conversion)) { throw new InvalidUnitTypeException(toDu.ToString()); } // Handle converting to/from bits if (fromDu.IsBit() && !toDu.IsBit()) { conversion *= 8; } else if (!fromDu.IsBit() && toDu.IsBit()) { conversion *= (decimal)1 / 8; } return(value / conversion); }
public static bool IsBit(this CapacityDigitalUnits unit) { return(unit == CapacityDigitalUnits.Bit);// || (unit >= CapacityDigitalUnits.Kilobit && unit <= CapacityDigitalUnits.Yottabit); }