Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpAtIn 252 of 509 menu
◀ ▶

Наследование атрибутов в C#

По умолчанию пометка видна только на том типе, где она записана. Параметр Inherited = true в AttributeUsage позволяет найти ту же метку и у наследника.

Так общий признак ставят на базовый класс и не повторяют его на каждом наследнике.

Пометим базовый класс и проверим метку на наследнике. Если убрать Inherited = true, та же проверка на наследнике уже не найдёт метку:

Console.WriteLine(typeof(DerivedEntity).IsDefined(typeof(BaseTagAttribute), inherit: true)); // выведет True [AttributeUsage(AttributeTargets.Class, Inherited = true)] class BaseTagAttribute : Attribute { } [BaseTag] class BaseEntity { } class DerivedEntity : BaseEntity { }

Сделайте атрибут наследуемым, унаследуйте класс Extended от Base и выведите "True", если метка базового класса видна на наследнике.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить