.Net cómo comparar typeInfo genérico
Pregunta
Quiero filtrar una colección de propiedades para encontrar todas las propiedades que son de tipo EntityCollection<>
al igual que:
entity.GetProperties().Where(p => p.PropertyType == typeof(EntityCollection<>));
El código anterior siempre no devolverá los resultados porque las propiedades serán de tipo EntityCollection<TEntity>
dónde TEntity
es un EntityObject
.
También he intentado usar EntityCollection<EntityObject>
sin éxito.
No me importa el tipo específico de TEntity
, Solo quiero propiedades que sean de tipo EntityCollection<>
independientemente del tipo de TEntity
.
Esto parece que debería ser simple, ¿me estoy perdiendo un truco aquí? :-)
Solución
Bueno, podrías usar:
Where(p => p.PropertyType.IsGenericType &&
p.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))
¿Eso es lo que buscas? Tenga en cuenta que esto no encontrará subtipos de EntityCollection<TEntity>
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow