2017-01-05 2 views
-2

Dies ist möglicherweise nicht machbar. Ich verwende Reflektion, um über die Eigenschaften eines Objekts zu iterieren. Eine dieser Objekteigenschaften könnte ein Dictionary sein, von dem ich nicht im Voraus weiß, ob es T-Typ ist.Wie kann ich ein Objekt in ein Wörterbuch des unbekannten Typs umwandeln

Ich muss in der Lage sein, dies auf etwas zu übertragen, über das ich iterieren kann, um alle Werte zu erhalten. So etwas, aber das funktioniert nicht.

var listTypeItems = (IDictionary>)containingObject; 
+0

Welche Art von Fehler erhalten Sie? Dies sollte tatsächlich funktionieren, siehe folgende Frage/Antwort: http://stackoverflow.com/questions/10206557/c-sharp-cast-dictionarystring-anytype-to-dictionarystring-object-involvin –

+0

Doh! Ich habe das> in der Klammer nicht gesehen. Es wurde als Kompilierfehler angezeigt. Ich bin so bereit für diese Woche, um vorbei zu sein. :) –

+0

Nun, zumindest bist du dort angekommen! :-) –

Antwort

0

Ich hatte einen Syntaxfehler in meinem Code. > in der oben gezeigten Klammer. Mein Fehler.

1

Dictionary<TKey,TValue> implementiert IDictionary, mit dem Sie die Werte in einer nicht statisch typisierte Weise erhalten kann.

+0

Hmm, ich sehe nicht, wie ihm das hilft, zum Glück hat er jetzt einen Tippfehler im Code gefunden, sonst würde das nicht habe ihm geholfen. Sein ursprünglicher Code unterschied sich nicht von Ihrer vorgeschlagenen Lösung! –

+0

@PeterBranforn Er versuchte, auf die generische Schnittstelle zu konvertieren, anstatt auf die nicht-generische Schnittstelle, die nicht kompiliert werden soll. Das Vorschlagen, dass er die nicht-generische Schnittstelle verwendet, wird den Code kompilieren. – Servy

+0

Wenn Sie auf das ">" verweisen, war dies nur sein Tippfehler ... –

0

Versuchen Sie, IDictionary zu werfen. Sie können darauf iterieren und erhalten DictionaryEntry, die beide Key und Value enthält.

Verwandte Themen