.Net Как сравнить общий типинфо
Вопрос
Я хочу отфильтровать набор свойств, чтобы найти все свойства, которые имеют тип EntityCollection<>
вот так:
entity.GetProperties().Where(p => p.PropertyType == typeof(EntityCollection<>));
Приведенный выше код всегда не будет возвращать результаты, потому что свойства будут иметь тип EntityCollection<TEntity>
куда TEntity
является EntityObject
.
Я также пытался использовать EntityCollection<EntityObject>
без успеха.
Меня не волнует конкретный тип TEntity
, Я просто хочу свойства, которые имеют тип EntityCollection<>
независимо от типа TEntity
.
Кажется, это должно быть просто, мне здесь не хватает уловка? :-)
Решение
Ну, вы можете использовать:
Where(p => p.PropertyType.IsGenericType &&
p.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))
Это то, что тебе нужно? Обратите внимание, что это не найдет подтипы из EntityCollection<TEntity>
.
Не связан с StackOverflow