这应该是一个相当简单的问题。我正在使用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);
}
我该怎么做?
答案 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);
它看起来更自然 最后,关于性能问题,我认为枚举往往很小,所以我不会担心