是否有办法将枚举类型放在变量中以供以后的类型转换?
本文关键字:类型转换 变量 枚举 类型 是否 | 更新日期: 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));