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

Adding all string constants from a class to a List of string constants in C#

我有一个class,

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

我想要 List<string> myConsts = new List<string>; 这样 myConsts 包含 Permissions class 中的所有字符串常量。我怎样才能在 C# 中实现这一点?

最好使用 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

如果您想避免手动维护 myConsts collection,您将不得不使用反射。

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

这会查看 Permissions 类型,选择所有 public 字段,然后将这些 FieldInfo 中的值拉入新的 collection.