我想创建一个枚举列表,就像我可以创建一个枚举类型列表,
e.g。
public enum Enum1{
Member1,
Member2,
Member3
}
public enum Enum2 {
Member1,
Member2,
Member3
}
public List<Type> EnumTypes = new List<Type> {
typeof(Enum1),
typeof(Enum2),
}
工作正常,但
public List<System.Enum> EnumTypes = new List<System.Enum> {
Enum1,
Enum2
};
不起作用。
我想添加以下详细信息: 我的代码的第一部分工作,它一直在运行... 第二部分不起作用,我提到了。 我想在底层问题中添加更多细节:
我的情况是我有一系列枚举类型(即EnumTypes)。我遍历列表做一些事情。不幸的是,我需要扩展主体并调用Enumhelper.GetEnumNames,其中T axtually是一个枚举。我使用WEC7,其中Enum.GetNames(typeof(MyEnum))不存在。 所以我希望有一种方法可以构建一个Enumerations列表,而不是enumtypes,并迭代该列表。 此外,如果有方法,如果我有一个类型,typeof(T),其中T是枚举,要调用 Enumhelper.GetEnumNames,所以说从它的类型得到一个枚举,这将有很大的帮助。
public void enumtester(){
foreach (var typeOfEnum in EnumHelper.EnumTypes) {
........
// typeOfEnum is typeof(T), but I do not know how to call the following method
List<string> names = EnumHelper.GetEnumNames<T>();
}
答案 0 :(得分:0)
我想创建一个枚举列表,就像我可以创建一个枚举类型列表
你不能。并且您的代码没有意义,您的示例会将其作为类型Enum
的变量将其添加到列表中,它需要是:EnumTypes.Add(Enum1.Member1);
等。
这与此类似:
List<MyObject> foo = new List<MyObject>();
foo.Add(MyObject);
显然不会工作。
为什么不这样做呢:
public static class EnumTypes
{
public enum Enum1
{
Member1,
Member2,
Member3
}
public enum Enum2
{
Member1,
Member2,
Member3
}
}
然后你可以访问这样的枚举成员:
EnumTypes.Enum1.Member1
等。
这样你甚至不需要包含所有枚举的列表,当你向班级添加新的枚举时,你不必更新列表初始化。