Beh, questo è perché il nome del tipo in .NET realtà IS List'1. Il "'1" è la cosiddetta arità del generico e ti dice quanti parametri di tipo ci sono.
È necessario in modo che sia possibile creare più di 1 tipo generico con lo stesso "nome" ma un diverso numero di parametri di tipo generico.
Ad esempio, esistono più di un tipo "chiamato" System.Action. I veri nomi di questi sono System.Action'1, System.Action'2, System.Action'3 ecc.
Quindi, se sai che il tuo tipo è generico, puoi supporre che ci sia questo 'XX alle alla fine del nome, quindi si può solo tagliare questa parte di distanza, per esempio come questo:
string strTypeName = typeof(List<>).Name.Substring(0, typeof(List<>).Name.LastIndexOf("`"));
PS: si prega di sostituire 'con `.
fonte
2009-10-07 17:53:50
Dovrebbe essere migliorato un po '. L'argomento generico dovrebbe essere formattato allo stesso modo, potrebbe essere di nuovo un tipo generico. Ovviamente dovrebbe supportare molti argomenti generici. –
Ero in procinto di digitare una versione più complessa che gestiva quella e moltiplica, che ho appena postato. – Erich
Modificato di nuovo per utilizzare gli aggregati. Controlla la cronologia delle modifiche se vuoi la versione "vecchia". La funzionalità è identica, ma volevo capire come funzionava l'aggregato, e questo era un buon modo per imparare :) – Erich