.Net Comment comparer typeinfo générique
Question
Je veux filtrer une collection de propriétés pour trouver toutes les propriétés qui sont de type EntityCollection<>
comme ceci:
entity.GetProperties().Where(p => p.PropertyType == typeof(EntityCollection<>));
Le code ci-dessus renvoie toujours aucun résultat, car les propriétés seront de type EntityCollection<TEntity>
où TEntity
est un EntityObject
.
J'ai aussi essayé d'utiliser EntityCollection<EntityObject>
sans succès.
Je ne se soucient pas du type spécifique de TEntity
, je veux juste des propriétés qui sont de type EntityCollection<>
quel que soit le type de TEntity
.
Cela semble que cela devrait être simple, que je manque un truc ici? : -)
La solution
Eh bien, vous pouvez utiliser:
Where(p => p.PropertyType.IsGenericType &&
p.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))
est-ce que vous êtes après? Notez que cela ne trouvez pas sous-types de EntityCollection<TEntity>
.