Наследование атрибутов в 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", если метка базового класса видна на наследнике.