如何使用反射获取所有字典值的列表?

时间:2012-08-15 10:56:20

标签: reflection dictionary

我有一本字典,想要使用反射从键/值对中获取所有字典值的列表。值可以是不同的类型。键是字符串,我能够以这种方式获得所有字典键:

PropertyInfo p_info_keys = obj.GetType().GetProperty("Keys");
IEnumerable<string> keys = (IEnumerable<string>)p_info_keys.GetValue(obj, null);

我可以使用以下代码查看所有字典值:

PropertyInfo p_info_values = obj.GetType().GetProperty("Values");
object values = p_info_values.GetValue(obj, null);

但是,我不知道如何得到我可以枚举的东西而不是对象类型。因此,这行代码存在问题:

object values = p_info_values.GetValue(obj, null);

任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以将弱类型IEnumerable用于此作业:

IEnumerable values = (IEnumerable)p_info_values.GetValue(obj, null);

现在您可以枚举值:

foreach(object value in values)
{
    // ...
}