2013-04-27 19 views
5

Genel bir türün türünü hiçbir genel parametre kullanmadan kontrol etmek mümkün mü?Denetim amacıyla C# genel türünün parametresiz türünü nasıl belirleyebilirim?

Örneğin, ben (gerçek türleri isimleri masum korumak için değiştirilmiştir) aşağıdakine benzer bir şey yapmak mümkün istiyorum:

var list = new List<SomeType>(); 

... 

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

Yukarıdaki kod anda aşağıdaki hata üretir:

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

Bunun bir yolu var mı? Tercihen, özlü ve genel parametrelere sahip olmayan tiplerle çalışacak bir şey (yani: "myString is List" ise).

cevap

9

Böyle denetleyebilirsiniz:

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