有没有办法将枚举类型放在变量中以便以后进行转换?

时间:2016-10-09 13:49:58

标签: c# type-conversion

我编写了一个给出对象名称和值的函数,返回这些位的文本名称。这些位名称在各种枚举中定义。这是我的功能的本质。

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语句。

1 个答案:

答案 0 :(得分:1)

Enum.ToObject允许您通过了解类型来动态重建枚举。

从那里,你可以使用Dictionary<string, Type将字符串映射到枚举类型,并重建值:

bit_name = Enum.ToObject(dictionary[object_name], bit_value).ToString();

要填充字典,请使用typeof

dictionary.Add("STATUS_WORD", typeof(eStatusWord));