0

正如标题所说,从这个枚举:

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));

不起作用(甚至无法编译),这是可以理解的。

4

4 回答 4

2

你其实有type,不用再用typeof

  var type = enumObject.GetType();
  Array values = Enum.GetValues(type);
于 2013-05-08T10:44:29.957 回答
1

尝试:

var names = Enum.GetNames(typeof(DeeMacsEnum));
于 2013-05-08T10:44:27.133 回答
1

你可以使用这个:

string[] s = Enum.GetNames(typeof(YourEnumType));
于 2013-05-08T10:44:36.227 回答
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.");
                }
            }
于 2013-05-08T10:56:07.347 回答