循环所有常量

时间:2014-01-20 09:53:23

标签: c# asp.net loops constants

我想从静态类循环所有常量变量。例如

public class SiteDetails
{
    public const string SD_MAIN_TRUST = "MainTrust";
    public const string SD_MAIN_COLLEGE = "MainCollege";
}

我想逐个读取常数来检查匹配。

2 个答案:

答案 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")
    ...
  }