作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个 API,该 API 中的一个函数将 Enum 作为参数,然后对应于一个使用的字符串。
public enum PackageUnitOfMeasurement
{
LBS,
KGS,
};
编写此代码的简单方法必须列出代码中的每个案例。但由于它们有 30 个案例,所以我试图避免这种情况并使用 Dictionary Data Structure
,但我似乎无法将如何将值与枚举相关联。
if(unit == PackageUnitOfMeasurement.LBS)
uom.Code = "02"; //Please note this value has to be string
else if (unit == PackageUnitOfMeasurement.KGS)
uom.Code = "03";
最佳答案
这是一种将映射存储在字典中并稍后检索值的方法:
var myDict = new Dictionary<PackageUnitOfMeasurement,string>();
myDict.Add(PackageUnitOfMeasurement.LBS, "02");
...
string code = myDict[PackageUnitOfMeasurement.LBS];
另一种选择是使用类似 DecriptionAttribute
的东西装饰每个枚举项并使用反射来读取它们,如 Getting attributes of Enum's value 中所述:
public enum PackageUnitOfMeasurement
{
[Description("02")]
LBS,
[Description("03")]
KGS,
};
var type = typeof(PackageUnitOfMeasurement);
var memInfo = type.GetMember(PackageUnitOfMeasurement.LBS.ToString());
var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),
false);
var description = ((DescriptionAttribute)attributes[0]).Description;
第二种方法的好处是您可以将映射保持在枚举附近,并且如果其中任何一个发生变化,您无需寻找任何其他需要更新的地方。
关于c# - 枚举值字典作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9618670/
我是一名优秀的程序员,十分优秀!