将类中的所有字符串常量添加到 C# 中的字符串常量列表中



我有一个类,

public static class Permissions
{
public const string AccessRightFormAdmin = "TEST1";
public const string AccessRightExperimental = "TEST2";
}

我想List<string> myConsts = new List<string>;这样,myConsts包含Permissions类中的所有字符串常量。如何在 C# 中实现此目的?

如果要避免手动维护myConsts集合,则必须使用反射。

public readonly List<string> myConsts = 
typeof(Permissions)
.GetFields()
.Select(x => x.GetValue(null).ToString())
.ToList();

这将查看Permissions类型,选择所有公共字段,然后将这些 FieldInfo 中的值提取到新集合中。

而不是字符串,最好使用 KeyValuePair,这样常量可以像枚举一样使用。

List<KeyValuePair<string,string>> consts = typeof(Permission).GetFields()
.Select(p => new KeyValuePair<string,string> ( p.Name, (string)p.GetValue(null))).ToList();

结果

AccessRightFormAdmin    TEST1
AccessRightExperimental TEST2

最新更新