[英]List<T> where T: enum
我想创建一个枚举列表,就像我可以创建一个枚举类型列表一样,
例如
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)) 不存在。 所以我希望有一种方法来构建一个枚举列表,而不是枚举类型,并迭代该列表。 此外,如果有一种方法,如果我有一个类型,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>();
}
我想创建一个枚举列表,就像我可以创建一个枚举类型列表一样
你不能。 并且您的代码没有意义,您的示例将其视为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
等等..
这样你甚至不需要一个包含所有枚举的列表,当你向类添加一个新的枚举时,你不必更新列表初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.