Свойства фильтра, возвращаемые TypeDescriptor.GetProperties (), в зависимости от класса, в котором они объявлены

StackOverflow https://stackoverflow.com/questions/1443314

Вопрос

Привет, ребята. У меня следующая ситуация.

Я хочу использовать TypeDescriptor для получения свойств определенного типа. Глубина типа в иерархии наследования может варьироваться. Я только хочу получить свойства, объявленные в самом типе, а не в его родителях (базе). Проблема в том, что когда я вызываю TypeDescriptor.GetProperties (), он возвращает все объявленное до иерархии наследования вплоть до Object.

Я только видел, что могу фильтровать вывод по атрибутам, но я не хочу добавлять другой атрибут к свойствам в моих типах только для этого. Получать их через отражение и не использовать TypeDescriptor будет делать то, что я хочу, но это не вариант для меня, потому что некоторые свойства будут добавлены в тип динамически в некоторый момент.

Есть идеи? Если вопрос не ясен, я мог бы привести пример.

Это было полезно?

Решение

Вы можете фильтровать свойства, используя свойство ComponentType :

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
                 where p.ComponentType == x.GetType()
                 select p;

Другие советы

Не могли бы вы просто изменить реализацию ICustomTypeDescriptor , чтобы отразить желаемое поведение?

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