2017-09-30 4 views
1

Ich spiele mit Reflexionen und stoppte mit dem nächsten Problem.Kann Dictionary-Objekt nicht durch Reflexion erkennen

Ich kann nicht erkennen, dass das Objekt aus dem Dictionary <,> Typ ist.

Ich erhalte PropertyInfo von Top-Objekt, und diese Eigenschaft ist von Dictionary <, Klasse sicher.

Dann mache ich das nächste:

if (pi.PropertyType.IsGenericType && pi.PropertyType == typeof(IDictionary<,>)) 

oder

if (pi.PropertyType.IsGenericType && pi.PropertyType == typeof(KeyValuePair<,>)) 

und in beiden Fällen die ohne Erfolg des zweiten Vergleich.

Kennt jemand einen anderen Weg, um ein Dictionary Type-Objekt zu 100% zu erkennen?

Antwort

2

Der Typ in der PropertyType ist ein geschlossener generischer Typ (Dictionary<string, int> zum Beispiel), wo die Typparameter bekannt sind. Sie möchten prüfen, ob der Typ Dictionary<,> ist (offener generischer Typ).

sollten Sie tun:

pi.PropertyType.GetGenericTypeDefinition() == typeof(Dictionary<,>) 
+0

Danke. Hat funktioniert. – Jaine

Verwandte Themen