将 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.
我有一个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.