2013-04-27 12 views
5

Czy można sprawdzić typ ogólny, bez korzystania z ogólnych parametrów?Jak określić typ bez parametrów typowego C# do celów sprawdzania?

Na przykład chciałbym być w stanie zrobić coś podobnego do poniższego (nazwy rzeczywistej typów zostały zmienione w celu ochrony niewinnych):

var list = new List<SomeType>(); 

... 

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

Powyższy kod aktualnie generuje następujący błąd:

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

Czy istnieje sposób obejścia tego? Najlepiej, jeśli coś zwięzłego i coś, co będzie działać z typami, które NIE mają ogólnych parametrów (np .: "if myString is List").

Odpowiedz

9

Można sprawdzić w ten sposób:

var type = list.GetType(); 
if(type.IsGenericType && 
    type.GetGenericTypeDefinition().Equals(typeof(List<>))) 
{ 
    // do work 
} 
Powiązane problemy