我想从静态类循环所有常量变量。例如
public class SiteDetails
{
public const string SD_MAIN_TRUST = "MainTrust";
public const string SD_MAIN_COLLEGE = "MainCollege";
}
我想逐个读取常数来检查匹配。
答案 0 :(得分:8)
获取您所有类型的所有公共静态字段:
Type type = typeof(SiteDetails);
var flags = BindingFlags.Static | BindingFlags.Public;
var fields = type.GetFields(flags); // that will return all fields of any type
如果您只想检查常量,可以添加IsLiteral
过滤。
var fields = type.GetFields(flags).Where(f => f.IsLiteral);
然后检查任何字段的值是否等于您的值:
string value = "MainCollege"; // your value
bool match = fields.Any(f => value.Equals(f.GetValue(null)));
答案 1 :(得分:4)
您可以使用 Linq 枚举常量:
foreach(FieldInfo info in typeof(SiteDetails).GetFields().Where(x => x.IsStatic && x.IsLiteral)) {
// info is the constant description with
// info.Name - constant's name (e.g. "SD_MAIN_TRUST")
// info.GetValue() - constant's value (e.g. "MainTrust")
...
}