Reflection 是否可以获取D中枚举成员的名称和值?

Reflection 是否可以获取D中枚举成员的名称和值?,reflection,d,Reflection,D,我想从D2中的enum类型中获取名称和值。我知道我可以使用std.traits获取枚举值,但是名称呢 鉴于: enum lst { apple, bottle, orange, blue } 我想得到一个像这样的关联数组 string lstmap[int] = [1:"apple", 2:"bottle", 3:"orange", 4:"blue"]. 答案是肯定的。正如有人告诉我的那样,解决方案是: foreach (i, member; __traits(al

我想从D2中的
enum
类型中获取名称和值。我知道我可以使用std.traits获取枚举值,但是名称呢

鉴于:

enum lst
{
  apple,
  bottle,
  orange,
  blue    
}
我想得到一个像这样的关联数组

string lstmap[int] = [1:"apple", 2:"bottle", 3:"orange", 4:"blue"].

答案是肯定的。正如有人告诉我的那样,解决方案是:

foreach (i, member; __traits(allMembers, lst)) {
  lstmap[cast(int) __traits(getMember, lst, member)] = member;
}

(复制为社区wiki的问题)

如果你只想把这个值用于字符串转换,考虑使用<代码> ST.D.V.N.!字符串(lst.orange)-将计算为
“orange”

您可以自己提交答案并将其标记为已接受,以便问题不再显示为未回答?您的答案是C,而不是D
foreach (i, member; __traits(allMembers, lst)) {
  lstmap[cast(int) __traits(getMember, lst, member)] = member;
}
      //ENUMList is the name of Enum

        var values = (ENUMList[])Enum.GetValues(typeof(ENUMList));
        var query = from name in values
                    select new EnumData//EnumData is a Modal or Entity
                    {
                        ID = (short)name,
                        Name = GetEnumDescription(name)//Description of Particular Enum Name
                    };
        return query.ToList();