2010-03-08 11 views
13

Quiero obtener el tipo de TKey y TValue dado un tipo Dictionary<TKey,TValue>.Cómo obtener el tipo de TKey y TValue dado un diccionario <TKey,TValue> tipo

por ejemplo. Si el tipo es Dictionary<Int32,String> Quiero saber como llegar KeyType = typeof (Int32) y valueType = typeof (String)

+0

¿podría explicar por qué lo necesita? –

+0

En la mayoría de los casos * útiles *, el código ya conoce los tipos; ya sea directamente ('typeof (int)'/'typeof (string)' en la pregunta), o indirectamente a través de genéricos, en cuyo caso será algo como 'typeof (TYourKeyType)'/'typeof (TYourValueType)' - do tienes 'objeto'? –

+0

Necesito construir el diccionario a partir del texto serializado. Como Dictionary no es serializable, utilizamos un formato personalizado. Entonces, cuando reconstruyamos necesitamos tipos para Key y Value – harsha

Respuesta

31

Creo que esto puede ser lo que buscas:

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: gracias; No puedo creer que me perdí de publicar un enlace a la documentación. –

+0

Me tomé la libertad de agregar un enlace a su publicación. –

Cuestiones relacionadas