Почему MemberInfo.GetCustomAttributes игнорирует наследование

254
23 марта 2017, 18:13

Метод 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 логический флаг игнорируется, всегда возвращаются только атрибуты без учёта цепочки наследования.

Чем обусловлено такое поведение?

Answer 1

Ответ простой: на уровне CLR свойства не переопределяются, а скрывают друг друга по имени. Если у вас есть виртуальное свойство в родителе и вы его переопределили в потомке - с точки зрения CLR это два разных свойства.

READ ALSO
System.Data.SqlClient.SqlException не обработано

System.Data.SqlClient.SqlException не обработано

Есть программкаПри выполнении записи в базу данных вылетает ошибка:

619
Отследить какая кнопка была нажата, если кнопки создаются программно

Отследить какая кнопка была нажата, если кнопки создаются программно

Здравствуйте, программно создаю на форме кнопки в зависимости от того, сколько записей существует в базе данных по заданному запросуПодскажите,...

389
Как определить на каком индексе (длине) находится символ?

Как определить на каком индексе (длине) находится символ?

Как определить на какой длине находится нужная мне строка от пользователя? Например, чтобы пользователь ввёл My name is AlexКак мне определить...

323
Как прочитать данные с сетевого диска либо по локальному пути MVC

Как прочитать данные с сетевого диска либо по локальному пути MVC

Пишу маленький проект с подключением файла с сетевого диска, при публикации на локальном ПК получаю исключение

545