К чему относится Inherited
свойство bool атрибутов?
Означает ли это, что если я определю свой класс с атрибутом AbcAtribute
(который имеет Inherited = true
), и если я унаследую другой класс от этого класса, то к производному классу будет применен тот же атрибут?
Чтобы прояснить этот вопрос на примере кода, представьте себе следующее:
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }
[Random]
class Mother
{ }
class Child : Mother
{ }
К нему Child
также Random
применен атрибут?
c#
.net
vb.net
attributes
пожрал элизиум
источник
источник
Inherited
собственности имеет сложный пример , который показывает разницу междуInherited=true
иInherited=false
как для унаследованного класса иoverride
методы.Ответы:
Когда Inherited = true (значение по умолчанию), это означает, что создаваемый вами атрибут может быть унаследован подклассами класса, украшенного атрибутом.
Итак - если вы создаете MyUberAttribute с помощью [AttributeUsage (Inherited = true)]
Затем используйте Атрибут, украсив суперкласс ...
Если мы создадим подкласс MySuperClass, он будет иметь этот атрибут ...
Затем создайте экземпляр MySubClass ...
Затем проверьте, есть ли у него атрибут ...
MySubClassInstance <--- теперь имеет MyUberAttribute со значением "Боб" в качестве значения SpecialName.
источник
Да, именно это и означает. Атрибут
источник
По умолчанию наследование атрибутов включено.
Вы можете изменить это поведение следующим образом:
источник