Domanda

Voglio filtrare una raccolta di proprietà per trovare tutte le proprietà di tipo EntityCollection<> così:

entity.GetProperties().Where(p => p.PropertyType == typeof(EntityCollection<>));

Il codice sopra non restituirà sempre alcun risultato perché le proprietà saranno di tipo EntityCollection<TEntity> dove TEntity è un EntityObject.

Ho anche provato a usare EntityCollection<EntityObject> senza successo.

Non mi interessa il tipo specifico di TEntity, Voglio solo proprietà di tipo EntityCollection<> indipendentemente dal tipo di TEntity.

Sembra che dovrebbe essere semplice, mi manca un trucco qui? :-)

È stato utile?

Soluzione

Bene, potresti usare:

Where(p => p.PropertyType.IsGenericType && 
           p.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))

È quello che stai cercando? Nota che questo non troverà sottotipi di EntityCollection<TEntity>.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top