2009-12-24 19 views
23

Mam klasy, która ma pewne właściwości typu List<float>, List<int> itp. Teraz jestem quering właściwości tej klasy poprzez refleksję, tak aby uzyskać listę PropertyInfo.Jak porównać typy ogólne?

Chcę filtrować typy, które są typu List<>. Jednak niepowodzenie powoduje niepowodzenie porównania.

mogę obejść ten problem poprzez porównanie nazwy, to następujące porównanie działa:

propertyInfo.PropertyType.Name == typeof(List<>).Name 

myślę, że powinien być lepszy sposób porównać głównych rodzajów. Jakieś wskazówki?

Odpowiedz

49

Można użyć:

Type type = propertyInfo.PropertyType; 
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>)) 
{ 
    ... 
}