/// <summary>Registers the unit.</summary> /// <param name="group">e.g. "length"</param> /// <param name="abbreviation">"ft"</param> /// <param name="unitsName">"feet"</param> /// <param name="conversionValue">12 as in how many base units it takes to get 1 of this unit.</param> public void RegisterUnit(string group, string abbreviation, string unitsName, double conversionValue) { UnitSubGroup unit = unit = new UnitSubGroup() { ShortName = abbreviation, Name = unitsName, Group = group, ConversionValue = conversionValue }; _subGroups[group + "_" + unitsName] = unit; _subGroups[group + "_" + abbreviation] = unit; _subGroupsToGroupMap[unitsName] = group; _subGroupsToGroupMap[abbreviation] = group; }
/// <summary>Registers the unit.</summary> /// <param name="group">e.g. "length"</param> /// <param name="abbreviation">"ft"</param> /// <param name="unitsName">"feet"</param> /// <param name="conversionValue">12 as in how many base units it takes to get 1 of this unit.</param> public void RegisterUnit(string group, string abbreviation, string unitsName, double conversionValue) { UnitSubGroup unit = unit = new UnitSubGroup() { ShortName = abbreviation, Name = unitsName, Group = group, ConversionValue = conversionValue }; _subGroups[group + "_" + unitsName] = unit; _subGroups[group + "_" + abbreviation] = unit; _subGroupsToGroupMap[unitsName] = group; _subGroupsToGroupMap[abbreviation] = group; }
/// <summary> /// Converts a baseunits value into the relative value. e.g. 60inches, "feet" returns 5 /// </summary> /// <param name="sourceBaseUnits"></param> /// <param name="unitsName"></param> /// <param name="destUnits"></param> /// <returns></returns> public double ConvertToRelativeValue(double sourceBaseUnits, string unitsName, UnitSubGroup destUnits) { if(destUnits == null) { var group = _subGroupsToGroupMap[unitsName]; destUnits = GetUnitsFor(group, unitsName); } // 2. Convert from base to destination // e.g. 60 inches to yards double destinationUnits = sourceBaseUnits; // "feet" to "yards" // feet 12 > 36 if (destUnits.ConversionValue > 1) destinationUnits = sourceBaseUnits / destUnits.ConversionValue; // "yards" to "feet" // 12 < 36 else if (destUnits.ConversionValue < 1) destinationUnits = sourceBaseUnits * destUnits.ConversionValue; return destinationUnits; }
/// <summary> /// Converts a baseunits value into the relative value. e.g. 60inches, "feet" returns 5 /// </summary> /// <param name="sourceBaseUnits"></param> /// <param name="unitsName"></param> /// <param name="destUnits"></param> /// <returns></returns> public double ConvertToRelativeValue(double sourceBaseUnits, string unitsName, UnitSubGroup destUnits) { if (destUnits == null) { var group = _subGroupsToGroupMap[unitsName]; destUnits = GetUnitsFor(group, unitsName); } // 2. Convert from base to destination // e.g. 60 inches to yards double destinationUnits = sourceBaseUnits; // "feet" to "yards" // feet 12 > 36 if (destUnits.ConversionValue > 1) { destinationUnits = sourceBaseUnits / destUnits.ConversionValue; } // "yards" to "feet" // 12 < 36 else if (destUnits.ConversionValue < 1) { destinationUnits = sourceBaseUnits * destUnits.ConversionValue; } return(destinationUnits); }