gpt4 book ai didi

c# - 枚举值字典作为字符串

转载 作者:行者123 更新时间:2023-11-30 13:15:23 25 4
gpt4 key购买 nike

我正在尝试制作一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com