Exemple #1
0
        /// <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);
        }
Exemple #2
0
 public static bool IsBit(this CapacityDigitalUnits unit)
 {
     return(unit == CapacityDigitalUnits.Bit);// || (unit >= CapacityDigitalUnits.Kilobit && unit <= CapacityDigitalUnits.Yottabit);
 }