2009-12-24 6 views
23

J'ai une classe qui a quelques propriétés de type List<float>, List<int> etc. Maintenant, je suis en train de tresser les propriétés de cette classe par réflexion afin que j'obtienne une liste de PropertyInfo.Comment comparer les types génériques?

Je veux filtrer les types qui sont de type List<>. Mais la comparaison

propertyInfo.PropertyType == typeof(List<>) 

échoue.

Je peux contourner ce problème en comparant les noms, à savoir, les travaux de comparaison suivante: Je pense que

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

il devrait y avoir une meilleure façon de comparer les types génériques. Des indices?

Répondre

49

Vous pouvez utiliser:

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