理论上可以在运行时在consts
中查找class
吗?
我有一个类似于此的静态类:
public static class Constants {
public const string Yes = "Yes";
public const string No = "No";
}
我想知道我是否可以创建一个可以接受Constants类的UnitTest,并从中读取所有的consts。我的想法是,我可以编写一个单元测试,然后针对所有的const字符串运行。因此,如果我在类中添加更多字符串,则不必更改单元测试。
我相信这里的答案是否定的......但是认为值得问一下以防万一!
答案 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);
然后,您可以在单元测试中根据需要执行这些操作。