正如标题所说,从这个枚举:
public enum DeeMacsEnum
{
Value1,
Value2,
Value3
}
我想要List<String>
。第一个元素将具有“Value1”,第二个元素将具有“Value2”等。
但是,我想保持这个方法足够通用,以便迭代任何类型的枚举
我尝试过的事情:
Array values = Enum.GetValues(typeof(DeeMacsEnum));
^这很好用。但不是通用的。为了使其可重复使用,我将其更改为:
var type = enumObject.GetType();
Array values = Enum.GetValues(typeof(type));
不起作用(甚至不编译),可以理解。
答案 0 :(得分:2)
您实际拥有type
,无需再使用typeof
var type = enumObject.GetType();
Array values = Enum.GetValues(type);
答案 1 :(得分:1)
尝试:
var names = Enum.GetNames(typeof(DeeMacsEnum));
答案 2 :(得分:1)
您可以使用:
string[] s = Enum.GetNames(typeof(YourEnumType));
答案 3 :(得分:0)
为什么不试试这个
public IEnumerable<string> getEnumValues<T>() where T: struct,IConvertible
{
var type = typeof(T);
if (type.IsEnum)
{
return Enum.GetNames(type);
}
else
{
throw new ArgumentException("Type parameter specified is not an enum type.");
}
}