我编写了一个给出对象名称和值的函数,返回这些位的文本名称。这些位名称在各种枚举中定义。这是我的功能的本质。
string BitName(string object_name, long bit_value) {
string bit_name="";
switch(object_name) {
case "STATUS_WORD" :
bit_name = ((eStatusWord)bit_value).ToString();
break;
case "TRAJ_STATUS" :
bit_name = ((eTrajectoryStatus)bit_value).ToString();
break;
}
return bit_name;
}
这种简单的方法有效,但现在有更多的操作可以创建大量的复制代码。
至少我想将枚举类型放入变量中并将其用于转换。像这样:
Type my_type = eStatusWord;
bit_name = ((my_type)bit_value).ToString();
// addition actions that are type dependent
如果可能,则Dictionary可以替换switch语句。
答案 0 :(得分:1)
Enum.ToObject
允许您通过了解类型来动态重建枚举。
从那里,你可以使用Dictionary<string, Type
将字符串映射到枚举类型,并重建值:
bit_name = Enum.ToObject(dictionary[object_name], bit_value).ToString();
要填充字典,请使用typeof
:
dictionary.Add("STATUS_WORD", typeof(eStatusWord));