2010-01-25 9 views
10

Ho una tabella di database in cui memorizzo altezza, larghezza, stato, eccetera di finestre. Come identificatore per le finestre, utilizzo il nome completo del tipo di modulo. Funziona bene, ma ho scoperto che alcuni moduli generici hanno nomi incredibilmente lunghi. Il motivo è che il tipo generico è elencato con informazioni complete sull'assemblaggio. C'è un modo per saltarlo?FullName di tipo generico senza informazioni di assemblaggio?

Per esempio il nome completo di una forma regolare sarebbe simile a questa:

Some.Name.Space.NameOfForm 

Ma il nome completo di una forma generica assomiglia a questo:

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

Perché si ottiene così tanto tempo ? C'è un modo per ottenere una versione più breve? Ad esempio qualcosa come:

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

Eventuali indizi?

+0

Come si ottiene il nome? .GetType(). FullName? –

+0

@Tor: sarebbe corretto, sì. – Svish

+0

@Svish [risposta di b8adamson] (http://stackoverflow.com/a/4662878/521757) è in realtà quella corretta. – jnm2

risposta

11

I d'accordo con dbemerlin a che il vostro obiettivo finale sembra strano, ma volevo solo far notare che

GetType().ToString(); 

sembra restituire una versione più breve del typename (w/o le informazioni di assemblaggio degli argomenti generici).

Immagino che questo potrebbe essere utile per una versione più leggibile del nome del tipo.

+4

Questa dovrebbe essere la risposta. Grazie. – IllidanS4

2

Immagino che il tipo utilizzato per la classe generica dipenda da un assembly specifico (come la maggior parte delle classi .NET), quindi non penso che otterrete nient'altro senza creare questa stringa manualmente mediante il reflection o l'analisi delle stringhe.

OTOH non credo che usando nomi di tipo come chiavi è una buona idea, forse si dovrebbe pensare di ottenere qualche altra chiave (ma non so i requisiti, quindi non posso consigliare qualcos'altro)

Problemi correlati