2010-01-25 20 views
10

Tengo una tabla de base de datos donde almaceno el alto, el ancho, el estado, etc. de las ventanas. Como identificador para las ventanas, uso el tipo completo de nombre de formulario. Funciona bien, pero descubrí que algunos formularios que son genéricos obtienen nombres que son increíblemente largos. La razón es que el tipo genérico se enumera con la información de ensamblaje completa. ¿Hay alguna manera de omitir eso?Nombre completo del tipo genérico sin información de conjunto?

Por ejemplo el nombre completo de una forma regular se vería así:

Some.Name.Space.NameOfForm 

Pero el nombre completo de una forma genérica se parece a esto:

Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType, AssemblyName, Version=1.0.2.0, Cuntulre=neutral, PublicKeyToken=null]] 

¿Por qué se ponen tan larga ? ¿Hay alguna manera de obtener una versión más corta? Por ejemplo, algo como:

Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType]] 

¿Alguna pista?

+0

¿Cómo se obtiene el nombre? .GetType(). FullName? –

+0

@Tor: Eso sería correcto, sí. – Svish

+0

@Svish [respuesta de b8adamson] (http://stackoverflow.com/a/4662878/521757) es en realidad la correcta. – jnm2

Respuesta

11

I de acuerdo con dbemerlin en que su objetivo final parece extraño, pero yo sólo quería señalar que

GetType().ToString(); 

parece volver una versión más corta del nombre de tipo (w/o la información de ensamblado de los argumentos genéricos).

Supongo que esto podría ser útil para una versión más legible del nombre de tipo.

+4

Esta debería ser la respuesta. Gracias. – IllidanS4

2

Supongo que el tipo utilizado para la clase genérica depende de un ensamblaje específico (como la mayoría de las clases .NET) así que no creo que obtenga nada más sin crear esta cadena manualmente mediante reflexión o análisis de cadenas.

otoh no creo que el uso de nombres de tipos como claves es una buena idea, tal vez debería pensar en conseguir alguna otra tecla (pero no conocer los requisitos, así que no puedo recomendar otra cosa)

Cuestiones relacionadas