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

Reflection 如何使用反射获取所有字典值的列表?,reflection,dictionary,Reflection,Dictionary,我有一个字典,希望使用反射从键/值对中获取所有字典值的列表。这些值可以是不同的类型。键是字符串,我可以通过以下方式获取所有字典键: PropertyInfo p_info_keys = obj.GetType().GetProperty("Keys"); IEnumerable<string> keys = (IEnumerable<string>)p_info_keys.GetValue(obj, null); 但是,我不确定如何获得可以枚举的对象,而不是对象类型。因

我有一个字典,希望使用反射从键/值对中获取所有字典值的列表。这些值可以是不同的类型。键是字符串,我可以通过以下方式获取所有字典键:

PropertyInfo p_info_keys = obj.GetType().GetProperty("Keys");
IEnumerable<string> keys = (IEnumerable<string>)p_info_keys.GetValue(obj, null);
但是,我不确定如何获得可以枚举的对象,而不是对象类型。因此,这一行代码有问题:

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

非常感谢您的帮助。

您可以使用弱类型的
IEnumerable
进行此作业:

IEnumerable values = (IEnumerable)p_info_values.GetValue(obj, null);
现在您可以枚举这些值:

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