Вопрос

Я хочу отфильтровать набор свойств, чтобы найти все свойства, которые имеют тип 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>.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top