如何从Enum获取成员名单?

时间:2010-08-09 17:02:22

标签: c# enums

这应该是一个相当简单的问题。我正在使用DocX库来创建新的word文档。我想制作一个测试word文档,看看每个TableDesign(枚举)如何选择我需要的那个。

  

Designs \可以应用于表格的样式。   命名空间:Novacode   汇编:DocX(在DocX.dll中)版本:1.0.0.10(1.0.0.10)

     

语法:

     

public enum TableDesign

     

会员姓名
   自
   TableNormal
   TableGrid
   LightShading
   LightShadingAccent1
   ....

等等。我想得到一些TableDesign的列表,这样我就可以在一个方法中重用它,为所有可能性创建新设计的新表,但我真的不知道如何从该枚举中获取列表:

foreach (var test in TableDesign) {
      createTable(documentWord, test);
}

我该怎么做?

3 个答案:

答案 0 :(得分:12)

找到自己答案:

    // get a list of member names from Volume enum,
    // figure out the numeric value, and display
    foreach (string volume in Enum.GetNames(typeof(Volume)))
    {
        Console.WriteLine("Volume Member: {0}\n Value: {1}",
            volume, (byte)Enum.Parse(typeof(Volume), volume));
    }

对于我使用过的具体案例:

 foreach (var test in Enum.GetNames(typeof(TableDesign))) {
     testMethod(documentWord, test);
 }

并在testMethod中我:

tableTest.Design = (TableDesign) Enum.Parse(typeof(TableDesign), test); 

它没有问题(即使它很慢,但我只是想快速得到的东西(并且是一个性能并不重要)。

也许它将来会帮助某人: - )

答案 1 :(得分:4)

可替换地:

foreach (var volume in Enum.GetValues(typeof(Volume))) 
{ 
    Console.WriteLine("Volume Member: {0}\n Value: {1}", 
        volume, (int) volume); 
} 

GetValue会返回Volume[]enum的值。打印enum值将调用其ToString(),并按名称进行呈现。投射到int(优于byte)将给出其编号。

答案 2 :(得分:0)

我想对MadBoy的答案添加评论,不知道为什么我不能... 无论如何,就像他说的那样,


foreach (TableDesign t in Enum.GetNames(typeof(TableDesign)))
{
     // do work
}

我认为测试可能就像


bool defined = Enum.IsDefined(typeof(TableDesign), value);

它看起来更自然 最后,关于性能问题,我认为枚举往往很小,所以我不会担心