【发布时间】:2013-02-04 16:44:57
【问题描述】:
我创建了一个方法,它接受一个枚举并将其转换为字典,其中每个 int 都与枚举的名称(作为字符串)相关联
// Define like this
public static Dictionary<int, string> getDictionaryFromEnum<T>()
{
List<T> commandList = Enum.GetValues(typeof(T)).Cast<T>().ToList();
Dictionary<int, string> finalList = new Dictionary<int, string>();
foreach (T command in commandList)
{
finalList.Add((int)(object)command, command.ToString());
}
return finalList;
}
(ps。是的,我有双重转换,但该应用程序是一个非常便宜且肮脏的 C#-enum 到 Javascript-enum 转换器)。
这样就可以轻松使用了
private enum _myEnum1 { one = 1001, two = 1002 };
private enum _myEnum2 { one = 2001, two = 2002 };
// ...
var a = getDictionaryFromEnum<_myEnum1>();
var b = getDictionaryFromEnum<_myEnum2>();
现在,我想知道是否可以创建一个枚举列表以用于一系列调用来迭代我的调用。
这是最初的问题:[为什么我不能这样称呼?]
我应该怎么做才能创建这样的通话?
List<Type> enumsToConvertList = new List<Type>();
enumsToConvertList.Add(typeof(_myEnum1));
enumsToConvertList.Add(typeof(_myEnum2));
// this'll be a loop
var a = getDictionaryFromEnum<enumsToConvertList.ElementAt(0)>();
【问题讨论】:
-
因为泛型中使用的类型和
System.Types不一样。 -
a的类型是什么? -
因为泛型只支持静态类型。您正在尝试将类型对象放入泛型方法中的类型参数中。尝试用 Type 对象重写 getDictionaryFromEnum
-
感谢您的建议,对引起的骚动表示抱歉。