2010-03-08 16 views
13

Chcę uzyskać typ TKey i TValue z podanym typem Dictionary<TKey,TValue>.Jak uzyskać typ TKey i TValue ze słownikiem <TKey,TValue> typ

np. Jeśli typ jest Dictionary<Int32,String> Chcę wiedzieć, jak uzyskać KeyType = typeof (Int32) i ValueType = typeof (String)

+0

czy możesz wyjaśnić, dlaczego tego potrzebujesz? –

+0

W większości * użytecznych * przypadków, kod już zna typy; albo bezpośrednio ('typeof (int)'/'typeof (ciąg)' w pytaniu), albo pośrednio przez generics - w tym przypadku będzie to coś w stylu 'typeof (TYourKeyType)'/'typeof (TYourValueType)' - do masz "obiekt"? –

+0

Potrzebuję skonstruować słownik z tekstu serializowanego. Ponieważ słownik nie podlega serializacji, używamy niestandardowego formatu. Następnie, po rekonstrukcji, potrzebujemy typów dla klucza i wartości: – harsha

Odpowiedz

31

myślę, że może to być to, czego szukasz:

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; Nie mogę uwierzyć, że przegapiłem link do dokumentacji. –

+0

Mogłem dodać link do Twojego postu. –

Powiązane problemy