如何在C#中通过UnitsNet获取单位枚举值的缩写?
使用UnitsNet获取单位枚举的缩写
基础实现方式
UnitsNet内置了UnitAbbreviationsCache类来处理单位缩写的获取,无需额外封装类也能直接拿到目标结果:
var myUnit = LengthUnit.Meter; var myAbbreviation = UnitAbbreviationsCache.Default.GetDefaultAbbreviation(myUnit.GetType(), (int)myUnit); // 输出结果:"m"
对你实现的UnitImpl的评价
你写的UnitImpl类是合规的,它正确复用了UnitsNet官方提供的UnitAbbreviationsCache来获取默认缩写,这是框架底层推荐的用法之一。可以小优化一下类型转换的写法,把Convert.ToInt32(UnitValue)改成(int)UnitValue,代码更简洁高效。
更便捷的扩展方法实现
如果不想封装类,还可以写一个枚举扩展方法,让调用更直观:
public static class UnitsNetExtensions { public static string GetAbbreviation(this Enum unit) { return UnitAbbreviationsCache.Default.GetDefaultAbbreviation(unit.GetType(), (int)unit); } }
使用时直接调用扩展方法:
var myUnit = LengthUnit.Meter; var myAbbreviation = myUnit.GetAbbreviation(); // 输出"m"
内容的提问来源于stack exchange,提问作者ltu
相关产品推荐
相关产品推荐

