Как получить список имен членов Enum? - PullRequest
4 голосов
/ 09 августа 2010

Это должен быть довольно простой вопрос.Я использую библиотеку DocX для создания новых документов Word.Я хотел создать документ с тестовым словом, чтобы увидеть, как выглядит каждый TableDesign (enum), чтобы выбрать тот, который мне нужен.

Designs \ Styles, которые можно применить к таблице.Пространство имен: сборка 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 ]

12 голосов
/ 09 августа 2010

Сам нашел ответ:

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

, а в методе testMetho я:

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

Это работало без проблем (даже если это было медленно, но я просто хотел, чтобы все было быстро (и производительность в течение одного года не имела значения).

Возможно, это поможет кому-то и в будущем: -)

4 голосов
/ 09 августа 2010

Альтернативно:

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) даст его номер.

0 голосов
/ 09 августа 2010

Я хотел бы добавить комментарий к ответу MadBoy, не знаю, почему я не могу ...во всяком случае, как он сказал, что это путь


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

также я думаю, что тестирование может быть похоже на


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

это просто кажетсяболее естественныйИ последнее, что касается производительности, я думаю, что enums имеют тенденцию быть очень маленькими, поэтому я не буду беспокоиться вообще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...