2012-08-15 2 views
0

У меня есть словарь и вы хотите получить список всех значений словаря из пары ключ/значение, используя отражение. Значения могут быть разных типов. Ключи являются строками, и я в состоянии получить все словарные ключи таким образом:Как получить список всех значений словаря с помощью отражения?

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

Вы можете использовать слабо типизированный IEnumerable для этой работы:

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

Теперь вы можете перечислить значения:

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

Большое спасибо. – tesicg

Смежные вопросы