是否有办法将枚举类型放在变量中以供以后的类型转换?

本文关键字:类型转换 变量 枚举 类型 是否 | 更新日期: 2023-09-27 18:12:18

我编写了一个函数,给定对象的名称和值,返回比特的文本名称。这些位名在不同的枚举中定义。以下是我的函数的核心。

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

是否有办法将枚举类型放在变量中以供以后的类型转换?

Enum.ToObject允许您通过知道枚举的类型来动态地重建枚举。

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

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

填充字典,使用typeof:

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