What does the Inherited
bool property on attributes refers to?
Does it mean that if I define my class with an attribute AbcAtribute
(that has Inherited = true
), and if I inherit another class from that class, that the derived class will also have that same attribute applied to it?
To clarify this question with a code example, imagine the following:
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }
[Random]
class Mother
{ }
class Child : Mother
{ }
Does Child
also have the Random
attribute applied to it?
When Inherited = true (which is the default) it means that the attribute you are creating can be inherited by sub-classes of the class decorated by the attribute.
So - if you create MyUberAttribute with [AttributeUsage (Inherited = true)]
[AttributeUsage (Inherited = True)]
MyUberAttribute : Attribute
{
string _SpecialName;
public string SpecialName
{
get { return _SpecialName; }
set { _SpecialName = value; }
}
}
Then use the Attribute by decorating a super-class...
[MyUberAttribute(SpecialName = "Bob")]
class MySuperClass
{
public void DoInterestingStuf () { ... }
}
If we create an sub-class of MySuperClass it will have this attribute...
class MySubClass : MySuperClass
{
...
}
Then instantiate an instance of MySubClass...
MySubClass MySubClassInstance = new MySubClass();
Then test to see if it has the attribute...
MySubClassInstance <--- now has the MyUberAttribute with "Bob" as the SpecialName value.