如何从Enum获取成员名单?

Mad*_*Boy 4 c# enums

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

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

句法:

public enum TableDesign

会员名称
Custom
TableNormal
TableGrid
LightShading
LightShadingAccent1
....

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

foreach (var test in TableDesign) {
      createTable(documentWord, test);
}
Run Code Online (Sandbox Code Playgroud)

我怎么做到的?

Mad*_*Boy 14

找到答案自己:

    // 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));
    }
Run Code Online (Sandbox Code Playgroud)

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

 foreach (var test in Enum.GetNames(typeof(TableDesign))) {
     testMethod(documentWord, test);
 }
Run Code Online (Sandbox Code Playgroud)

在testMethod我:

tableTest.Design = (TableDesign) Enum.Parse(typeof(TableDesign), test); 
Run Code Online (Sandbox Code Playgroud)

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

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


Jam*_*ran 5

交替:

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

GetValue将返回一个Volume[]作为enums的值。打印一个enum值将调用它的ToString(),按它的名称呈现它。投射到int(优于byte) 将给出其编号。