2010-03-08 7 views
13

Ich möchte Typ von TKey und TValue geben einen Dictionary<TKey,TValue> Typ.Wie bekomme ich Typ von TKey und TValue gegeben ein Wörterbuch <TKey,TValue> Typ

z. Wenn Typ Dictionary<Int32,String> ist, ich will wissen, wie keyType = typeof zu bekommen (Int32) und valuetype = typeof (String)

+0

könnten Sie erklären, warum Sie das brauchen? –

+0

In den meisten * nützlichen * Fällen kennt der Code bereits die Typen; entweder direkt ('typeof (int)'/'typeof (string)' in der Frage) oder indirekt über generics - in diesem Fall wird es etwas wie 'typeof (TYourKeyType)'/'typeof (TYourValueType)' - tun Sie haben 'Objekt'? –

+0

Ich muss das Wörterbuch aus serialisiertem Text erstellen. Da das Wörterbuch nicht serialisierbar ist, verwenden wir ein benutzerdefiniertes Format. Wenn wir dann rekonstruieren, brauchen wir Typen für Schlüssel und Wert. – harsha

Antwort

31

Ich glaube, das sein kann, was Sie suchen:

Dictionary<int, string> dictionary = new Dictionary<int, string>(); 
Type[] arguments = dictionary.GetType().GetGenericArguments(); 
Type keyType = arguments[0]; 
Type valueType = arguments[1]; 

Ref: Type.GetGenericArguments

+0

http://msdn.microsoft.com/en-us/library/system.type.getgenericarguments.aspx –

+0

@Mitch: thanks; Ich kann nicht glauben, dass ich einen Link zu der Dokumentation verpasst habe. –

+0

Ich habe mir die Freiheit genommen, einen Link zu deinem Beitrag hinzuzufügen. –

Verwandte Themen