views:

684

answers:

3

Hi,

Are attributes applied to an abstract method in a base class applied to the overridden versions in the child classes?

I hope the question is clear enough without an example.

+10  A: 

It depends on how the attribute itself is declared - see AttributeUsageAttribute.Inherited property.

Pavel Minaev
Thank you very much
Ali Kazmi
+6  A: 

It depends on the Attribute.

attributes applied to Attribute class defination, carry a property [AttributeUsageAttribute.Inherited] that determines if an attributed is inherited in the derived classes.

check out this sample

[global::System.AttributeUsage(AttributeTargets.Method, Inherited = true, 
     AllowMultiple = false)]
public sealed class MyAttribute : Attribute
{

    public MyAttribute (string FieldName)
    {
        //constructor.
    }

}
this. __curious_geek
Thank you very much
Ali Kazmi
+1  A: 

You can specify that by applying the AttributeUsage attribute to your custom ones, and setting the Inherited property (which is true by default). This property indicates if your attribute can be inherited by classes that are derived from the classes that have your custom attribute applied.

[AttributeUsage( Inherited = false)]
public class CustomAttribute : Attribute
{
}

Recommended read:

CMS