c# – Enum值字典作为字符串

我正在尝试创建一个API,该API中的一个函数将Enum作为参数,然后对应于使用的字符串.

public enum PackageUnitOfMeasurement
{
        LBS,
        KGS,
};

对此进行编码的简单方法必须列出代码中的每个案例.但是因为它们是30个案例,所以我试图避免这种情况并使用字典数据结构,但我似乎无法连接点如何将值与枚举相关联.

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# – Enum值字典作为字符串 - 代码日志