2009-07-14 11 views
29

Werden Attribute auf eine abstrakte Methode in einer Basisklasse angewendet, die auf die überschriebenen Versionen in den untergeordneten Klassen angewendet wird?Sind Methodenattribute in C# geerbt?

Ich hoffe, die Frage ist ohne ein Beispiel klar genug.

Antwort

17

Es hängt von dem Attribut ab.

Attribute, die auf die Attributklasse defination angewendet werden, tragen eine Eigenschaft [AttributeUsageAttribute.Inherited], die bestimmt, ob eine attributierte Klasse in den abgeleiteten Klassen geerbt wird.

Sehen Sie sich diese Probe

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

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

} 
+0

Vielen Dank –

9

können Sie festlegen, dass durch die AttributeUsage attribute auf Ihre Gewohnheit eine Anwendung und zum Einstellen der Inherited property (standardmäßig wahr ist). Diese Eigenschaft gibt an, ob Ihr Attribut von Klassen geerbt werden kann, die von den Klassen abgeleitet sind, auf die Ihr benutzerdefiniertes Attribut angewendet wurde.

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

Empfohlen lesen:

+2

1 für true per Default – mrcrowl

Verwandte Themen