Метод MemberInfo.GetCustomAttributes получает список атрибутов члена типа. Вторым параметром он принимает логический флаг, который при значении true позволяет получить список атрибутов с учётом всей цепочки наследования.
Однако, в описании метода и на MSDN упоминается следующее поведение:
This method ignores the inherit parameter for properties and events. To search the inheritance chain for attributes on properties and events, use the appropriate overloads of the Attribute.GetCustomAttributes method.
То есть для PropertyInfo и EventInfo логический флаг игнорируется, всегда возвращаются только атрибуты без учёта цепочки наследования.
Чем обусловлено такое поведение?
Ответ простой: на уровне CLR свойства не переопределяются, а скрывают друг друга по имени. Если у вас есть виртуальное свойство в родителе и вы его переопределили в потомке - с точки зрения CLR это два разных свойства.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники