如何将类的属性作为列表获取

时间:2013-12-12 14:13:24

标签: c# string collections

我想将类的属性作为字符串列表。

例如:有一个名为Colors的类。颜色有几个属性Colors.REDColors.Blue等  我想要的是将RED,BLUE等作为列表有没有办法做到这一点?

更新

这个问题不仅仅是关于Colors类,它只是一个例子

2 个答案:

答案 0 :(得分:1)

KnownColor枚举中定义的所有颜色。您可以轻松获取其值

string[] colors = Enum.GetNames(typeof(KnownColor));

更新:使用反射获取公共属性名称

var flags = BindingFlags.Public | BindingFlags.Static;
var names = typeof(Color).GetProperties(flags).Select(p => p.Name);

UPDATE2事实证明,您希望从iTextSharp BaseFont类获取默认字体名称常量(请在下次指定您的意图时更详细)。这些字体存储在名为 BuiltinFonts14 的受保护静态字段中。您可以通过反射获取字体字典:

var flags = BindingFlags.NonPublic | BindingFlags.Static;
var buildinFonts = (Dictionary<string, PdfName>)typeof(BaseFont)
       .GetField("BuiltinFonts14", flags).GetValue(null);

字体名称只是这本字典的关键字:

var fontNames = buildinFonts.Select(kvp => kvp.Key).ToArray();

答案 1 :(得分:1)

我认为

typeof(Colors).GetProperties()

可以做到这一点。

opp已经回答:p