Describe the bug
Calling UnitAbbreviationsCache.Default.GetDefaultAbbreviation(unitType) throws a NotImplementedException (e.g. "No abbreviation is specified for Enum.Millimeter") when passed a value of System.Enum {UnitsNet.Units.LengthUnit} instead of UnitsNet.Units.LengthUnit. Its sister methods GetUnitAbbreviations<TUnitType>() and GetUnitAbbreviations() behave the same way.
To Reproduce
Steps to reproduce the behavior (just an example):
- Add nuget UnitsNet 4.125.0 to a .NET 6.0 project
- Build using Visual Studio 2022 Community v17.0.1
- Attempt to execute the following code:
string quantityName = "Length";
string unitName = "Millimeter";
var quantityInfo = Quantity.ByName.FirstOrDefault(d => d.Key == quantityName).Value;
if (quantityInfo != default && Enum.TryParse(quantityInfo.UnitType, unitName, out var unitInfo)) {
// This line throws a NotImplementedException
string abbreviation = UnitAbbreviationsCache.Default.GetDefaultAbbreviation((Enum)unitInfo);
}
Expected behavior
The method should return the abbreviated form of millimeter ("mm").
Additional notes
The rationale behind this use case is to find the abbreviation of a unit that is only known at runtime, i.e. from the strings "Length" and "Millimeter".
An alternative workaround would be possible if an Abbreviation property was added to the UnitInfo class alongside the full Name property, or alternatively if a GetAbbreviation(Enum unitEnum) method was added to the QuantityInfo class.
Describe the bug
Calling
UnitAbbreviationsCache.Default.GetDefaultAbbreviation(unitType)throws aNotImplementedException(e.g. "No abbreviation is specified for Enum.Millimeter") when passed a value ofSystem.Enum {UnitsNet.Units.LengthUnit}instead ofUnitsNet.Units.LengthUnit. Its sister methodsGetUnitAbbreviations<TUnitType>()andGetUnitAbbreviations()behave the same way.To Reproduce
Steps to reproduce the behavior (just an example):
Expected behavior
The method should return the abbreviated form of millimeter ("mm").
Additional notes
The rationale behind this use case is to find the abbreviation of a unit that is only known at runtime, i.e. from the strings "Length" and "Millimeter".
An alternative workaround would be possible if an
Abbreviationproperty was added to theUnitInfoclass alongside the fullNameproperty, or alternatively if aGetAbbreviation(Enum unitEnum)method was added to theQuantityInfoclass.