diff --git a/UnitsNet/CustomCode/UnitAbbreviationsCache.cs b/UnitsNet/CustomCode/UnitAbbreviationsCache.cs index 073cb50f03..613386f8ff 100644 --- a/UnitsNet/CustomCode/UnitAbbreviationsCache.cs +++ b/UnitsNet/CustomCode/UnitAbbreviationsCache.cs @@ -146,7 +146,16 @@ public void MapUnitToAbbreviation(TUnitType unit, IFormatProvider? fo /// Unit abbreviations to add. public void MapUnitToAbbreviation(UnitKey unitKey, IFormatProvider? formatProvider, params IEnumerable abbreviations) { - PerformAbbreviationMapping(unitKey, formatProvider, false, abbreviations); + MapUnitToAbbreviation(Quantities.GetUnitInfo(unitKey), formatProvider, abbreviations); + } + + /// > + /// The info representing the unit. + /// The format provider to use for lookup. Defaults to if null. + /// Unit abbreviations to add. + public void MapUnitToAbbreviation(UnitInfo unitInfo, IFormatProvider? formatProvider, params IEnumerable abbreviations) + { + AddAbbreviation(unitInfo, formatProvider, false, abbreviations); } #endregion @@ -212,16 +221,20 @@ public void MapUnitToDefaultAbbreviation(Type unitType, int unitValue, IFormatPr /// Unit abbreviation to add as default. public void MapUnitToDefaultAbbreviation(UnitKey unitKey, IFormatProvider? formatProvider, string abbreviation) { - PerformAbbreviationMapping(unitKey, formatProvider, true, abbreviation); + MapUnitToDefaultAbbreviation(Quantities.GetUnitInfo(unitKey), formatProvider, abbreviation); } - #endregion - - private void PerformAbbreviationMapping(UnitKey unitKey, IFormatProvider? formatProvider, bool setAsDefault, params IEnumerable abbreviations) + /// > + /// The info representing the unit. + /// The format provider to use for lookup. Defaults to if null. + /// Unit abbreviation to add as default. + public void MapUnitToDefaultAbbreviation(UnitInfo unitInfo, IFormatProvider? formatProvider, string abbreviation) { - AddAbbreviation(Quantities.GetUnitInfo(unitKey), formatProvider, setAsDefault, abbreviations); + AddAbbreviation(unitInfo, formatProvider, true, abbreviation); } - + + #endregion + /// /// Gets the default abbreviation for a given unit type and its numeric enum value. /// If a unit has more than one abbreviation defined, then it returns the first one. @@ -282,10 +295,25 @@ public string GetDefaultAbbreviation(Type unitType, int unitValue, IFormatProvid /// public string GetDefaultAbbreviation(UnitKey unitKey, IFormatProvider? formatProvider = null) { - IReadOnlyList abbreviations = GetUnitAbbreviations(unitKey, formatProvider); + return GetDefaultAbbreviation(Quantities.GetUnitInfo(unitKey), formatProvider); + } + + /// + /// The info representing the unit. + /// The format provider to use for lookup. Defaults to if null. + /// + /// Thrown when no unit information is found for the specified + /// . + /// + /// + /// Thrown when no abbreviations are mapped for the specified unit. + /// + public string GetDefaultAbbreviation(UnitInfo unitInfo, IFormatProvider? formatProvider = null) + { + IReadOnlyList abbreviations = GetUnitAbbreviations(unitInfo, formatProvider); if (abbreviations.Count == 0) { - throw new InvalidOperationException($"No abbreviations were found for {unitKey.UnitEnumType.Name}.{(Enum)unitKey}. Make sure that the unit abbreviations are mapped."); + throw new InvalidOperationException($"No abbreviations were found for {unitInfo.QuantityInfo.Name}.{unitInfo.Name}. Make sure that the unit abbreviations are mapped."); } return abbreviations[0]; @@ -341,13 +369,27 @@ public IReadOnlyList GetUnitAbbreviations(Type unitType, int unitValue, /// . /// public IReadOnlyList GetUnitAbbreviations(UnitKey unitKey, IFormatProvider? formatProvider = null) + { + return GetUnitAbbreviations(Quantities.GetUnitInfo(unitKey), formatProvider); + } + /// + /// Retrieves the unit abbreviations for a specified unit info and optional format provider. + /// + /// The key representing the unit info and value. + /// The format provider to use for lookup. Defaults to if null. + /// A read-only collection of unit abbreviation strings. + /// + /// Thrown when no unit information is found for the specified + /// . + /// + public IReadOnlyList GetUnitAbbreviations(UnitInfo unitInfo, IFormatProvider? formatProvider = null) { if (formatProvider is not CultureInfo culture) { culture = CultureInfo.CurrentCulture; } - return GetAbbreviationsWithFallbackCulture(Quantities.GetUnitInfo(unitKey), culture); + return GetAbbreviationsWithFallbackCulture(unitInfo, culture); } ///