2013-04-27 10 views
5

È possibile verificare il tipo di un tipo generico, senza utilizzare parametri generici?Come posso determinare il tipo senza parametri di un tipo generico C# a scopo di controllo?

Per esempio, mi piacerebbe essere in grado di fare qualcosa di simile a quanto segue (i nomi tipi effettivi sono stati cambiati per proteggere gli innocenti):

var list = new List<SomeType>(); 

... 

if (list is List) 
    { 
    Console.WriteLine("That is a generic list!"); 
    } 

Il codice di cui sopra attualmente genera il seguente errore:

Using the generic type 'System.Collections.Generic.List<T>' requires 1 type arguments 

C'è un modo per aggirare questo? Preferibilmente, qualcosa di conciso e qualcosa che funzioni con tipi che NON hanno parametri generici (es: "se myString è List").

risposta

9

È possibile controllare in questo modo:

var type = list.GetType(); 
if(type.IsGenericType && 
    type.GetGenericTypeDefinition().Equals(typeof(List<>))) 
{ 
    // do work 
} 
Problemi correlati