.Net Как сравнить обобщенную typeinfo - PullRequest
0 голосов
/ 21 марта 2011

Я хочу отфильтровать коллекцию свойств, чтобы найти все свойства типа EntityCollection<>, например, так:

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

Приведенный выше код не будет возвращать никаких результатов, посколькусвойства будут иметь тип EntityCollection<TEntity>, где TEntity - это EntityObject.

Я также пытался использовать EntityCollection<EntityObject> безуспешно.

Iне заботится о конкретном типе TEntity, я просто хочу свойства типа EntityCollection<> независимо от типа TEntity.

Кажется, это должнобудь проще, я что-то упустил?: -)

1 Ответ

1 голос
/ 21 марта 2011

Ну, вы можете использовать:

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

Это то, что вы ищете?Обратите внимание, что при этом не будет найдено подтипов из EntityCollection<TEntity>.

...