2017-01-05 2 views
-2

Это может быть невыполнимо. Я использую отражение для перебора свойств объекта. Одним из свойств этого объекта может быть словарь, о котором я заранее не знаю ни Т-типа.Как я могу наложить объект на словарь неизвестного типа

Dictionary<T, T2> 

Мне нужно уметь это сделать, чтобы я мог перебирать все значения. Что-то вроде этого, но это не работает.

var listTypeItems = (IDictionary>)containingObject; 
+0

Какая ошибка у вас? Это должно действительно работать, см. Следующий связанный вопрос/ответ: http://stackoverflow.com/questions/10206557/c-sharp-cast-dictionarystring-anytype-to-dictionarystring-object-involvin –

+0

Doh! Я не видел> внутри круглой скобки. Это проявлялось как ошибка компиляции. Я так готов на этой неделе закончить. :) –

+0

Ну, по крайней мере, у вас там! :-) –

ответ

0

У меня была синтаксическая ошибка в моем коде. > внутри скобок, показанной выше. Виноват.

1

Dictionary<TKey,TValue> реализует IDictionary, который позволяет получить значения в не статически типизированных образом.

+0

Хм, я не понимаю, как это ему помогает, к счастью, он нашел опечатку сейчас в коде, иначе это не будет помогли ему. Его оригинальный код не отличался от вашего предлагаемого решения! –

+0

@PeterBranforn Он пытался использовать общий интерфейс, а не универсальный интерфейс, который не собирается компилировать. Предполагая, что он использует не общий интерфейс, он собирается скомпилировать код. – Servy

+0

Если вы ссылаетесь на «>», это была его типография ... –

0

Попробуйте добавить к IDictionary. Вы можете выполнить итерацию и получить DictionaryEntry, который содержит и Key, и Value.