/// <summary> /// Converts a value from the source vocabulary item units to /// the base units of the vocabulary. /// </summary> /// /// <remarks> /// This method does not check the sign of the value. The caller /// is responsible for ensuring the input data value make sense for /// the input vocabulary item. /// </remarks> /// /// <param name="vocabularyItem">The vocabulary item of the data /// value to convert to base units.</param> /// /// <param name="value">The data value to convert to base units. /// </param> /// /// <returns>The converted data value in the base units for the /// vocabulary. /// </returns> /// /// <exception cref="ArgumentNullException"> /// The <paramref name="vocabularyItem"/> parameter is <b>null</b>. /// </exception> /// /// <exception cref="NotSupportedException"> /// The <paramref name="vocabularyItem"/> parameter does not /// support conversions to base units. /// </exception> /// /// <exception cref="ConversionFailureException"> /// An unknown or unsupported conversion is encountered or /// an error occurs during the conversion to base units. /// </exception> /// public static double ConvertToBaseUnits( VocabularyItem vocabularyItem, double value) { Validator.ThrowIfArgumentNull(vocabularyItem, nameof(vocabularyItem), Resources.VocabularyItemNull); if (vocabularyItem.InfoXml == null) { throw new NotSupportedException(Resources.VocabularyItemConversionNotSupported); } XPathNavigator nav = vocabularyItem.InfoXml.CreateNavigator(); try { nav = nav.SelectSingleNode("unit-conversions/base-unit-conversion"); } catch (Exception) { // this can occur if conversion xml is corrupted. We don't // want to expose xml parse issues here to the outside world // as recommended by the .NET documentation for // XPathNavigator throw new ConversionFailureException(Resources.VocabularyItemConversionGeneralException); } if (nav == null) { throw new NotSupportedException(Resources.VocabularyItemConversionNotSupported); } return(DoConversion(nav, value)); }
internal override void AddVocabularyItem(string key, VocabularyItem item) { base.AddVocabularyItem(key, item); _orderedItemsList.Add(item); }