Во-первых, я не верю, что любое поведение, о котором вы спрашиваете, будет зависеть от атрибута AttributeUsage
, который должен украшать ваши классы атрибутов (, похоже, я могу ошибаться ). Я также не вижу, где какой-либо атрибут будет объединен. Каждый атрибут является представлением класса сам по себе. Каждый класс атрибута должен возвращать свои собственные данные. Я ожидаю, что DerivedClass.GetCustomAttributes()
вернет три отдельные ссылки для каждого атрибута - 2 из базового класса и 1 для себя.
Попробуйте установить AttributeUsage в 'MyAttribute', чтобы разрешить несколько. Возможно, они не объединяются, а получают «последнюю» версию атрибута.
Я просто подумал о чем-то еще, что могло вызвать таинственный исчезающий акт. Возможно, вам придется пойти после класса base
, чтобы получить атрибут original ? Вы можете попробовать это:
base.GetType().GetCustomAttributes();
Я немного покопался, и вот что сделает AttibuteUsage
и может заставить вас увидеть только один из MyAttribute
классов:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
Я был близок в своем заявлении ранее об использовании AttributeUsage
; однако это именованный параметр Inherited
, который ограничит видимость для декорации базового класса 'MyAttribute
. Попробуйте указать Inherited = true
и посмотрите, что вы получите.