Lookup在运行时在类中构成

时间:2013-07-24 14:57:45

标签: c# unit-testing

理论上可以在运行时在consts中查找class吗?

我有一个类似于此的静态类:

public static class Constants {
    public const string Yes = "Yes";
    public const string No = "No";
}

我想知道我是否可以创建一个可以接受Constants类的UnitTest,并从中读取所有的consts。我的想法是,我可以编写一个单元测试,然后针对所有的const字符串运行。因此,如果我在类中添加更多字符串,则不必更改单元测试。

我相信这里的答案是否定的......但是认为值得问一下以防万一!

2 个答案:

答案 0 :(得分:5)

尝试这样的事情:

var t= typeof(Constants).GetFields(BindingFlags.Static | BindingFlags.Public)
                    .Where(f => f.IsLiteral);
foreach (var fieldInfo in t)
{
   // name of the const
   var name = fieldInfo.Name;

   // value of the const
   var value = fieldInfo.GetValue(null);
}

答案 1 :(得分:2)

使用反射,您可以使用字段的IsLiteral属性来确定它是否为常量:

var consts = myType.GetFields(BindingFlags.Static | BindingFlags.Public).Where(fld => fld.IsLiteral);

然后,您可以在单元测试中根据需要执行这些操作。