.NET So vergleichen Sie generische Typinfo
Frage
Ich möchte eine Sammlung von Eigenschaften filtern, um alle Eigenschaften zu finden, die vom Typ sind EntityCollection<>
Like SO:
entity.GetProperties().Where(p => p.PropertyType == typeof(EntityCollection<>));
Der obige Code gibt immer keine Ergebnisse zurück, da die Eigenschaften vom Typ sein werden EntityCollection<TEntity>
wo TEntity
ist ein EntityObject
.
Ich habe auch versucht zu benutzen EntityCollection<EntityObject>
ohne Erfolg.
Ich kümmere mich nicht um die spezifische Art von TEntity
, Ich möchte nur Eigenschaften, die vom Typ sind EntityCollection<>
unabhängig von der Art von TEntity
.
Das scheint einfach zu sein, fehlt mir hier einen Trick? :-)
Lösung
Nun, Sie könnten verwenden:
Where(p => p.PropertyType.IsGenericType &&
p.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))
Nach dem wählst du das? Beachten Sie, dass dies nicht gefunden wird Subtypen von EntityCollection<TEntity>
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow