我在C#中有一个课程:
public static class Constants
{
public static class Animals
{
public const string theDog = "dog";
public const string theCat = "cat";
}
}
我想遍历该类的“赋值”(而不是属性)。我想获得值而不必 明确指定属性。我要这样做是因为我有很多常量的类,并且想将它们添加到列表中。
所以,我想要的输出/代码看起来像这样:
foreach (string animal in Constants.Animals)
{
Console.WriteLine(animal)
}
输出:
dog
cat
我已经尝试过反射,但这只能使我拥有财产。
答案 0 :(得分:1)
请参阅此反思: GetValue将为您提供价值。
foreach (PropertyInfo propertyinfo in typeof(yourClass).GetProperties())
{
if(propertyinfo !=null){
var valueOfField=propertyinfo.GetValue(yourobject);
var fieldname = propertyinfo.Name;
if (valueOfField!=null && fieldname != null)
{
string data=fieldname +"="+valueOfField
}
}
}
答案 1 :(得分:1)
尝试使用 Reflection :
using System.Reflection;
...
var animals = typeof(Constants.Animals)
.GetFields(BindingFlags.Public | BindingFlags.Static)
.Where(field => field.IsLiteral)
.Where(field => field.FieldType == typeof(String))
.Select(field => field.GetValue(null) as String);
Console.Write(string.Join(Environment.NewLine, animals));
结果:
dog
cat
如果您想循环播放
foreach (string animal in animals) {
Console.WriteLine(animal);
}