gpt4 book ai didi

c# - 数组的静态类成员

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:44 59 4
gpt4 key购买 nike

如何获取一个包含类的所有静态字符串的数组?

我有什么:

public static class A
{
public static class BA
{
public const string BAA = "baa";
public const string BAB = "bab";
public const string BAC = "bac";
}
public static class BB
{
public const string BBA = "bba";
public const string BBB = "bbb";
public const string BBC = "bbc";
}
}

我想要的:

string[] BAs = new string[]{"baa","bab","bac"};
string[] BBs = new string[]{"bba","bbb","bbc"};

也很好(但更喜欢上面的解决方案):

string[] BAs = new string[]{"BAA","BAB","BAC"};
string[] BBs = new string[]{"BBA","BBB","BBC"};

一些伪代码:

string[] BAs = A.BA.GetAllStringVariablesFromStaticMembers();
string[] BBs = A.BB.GetAllStringVariablesFromStaticMembers();

这可能吗?如果是,我该怎么做?

附加信息:静态类内部只包含静态字符串,因此通用成员方法也是可能的,但我更喜欢该方法只返回给定类的静态字符串。

最佳答案

您可以通过反射使用稍微不同的语法来做到这一点:

public static String[] GetAllStringVariablesFromStaticMembers(Type value) {
if (Object.ReferenceEquals(null, value))
throw new ArgumentNullException("value");

List<String> result = new List<String>();

foreach (FieldInfo fi in value.GetFields(BindingFlags.Static | BindingFlags.Public))
if (fi.FieldType == typeof(String))
result.Add(fi.GetValue(null) as String);

return result.ToArray();
}

...

string[] BAs = GetAllStringVariablesFromStaticMembers(typeof(A.BA));

关于c# - 数组的静态类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935536/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com