PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Attribute vererben!?


Kabelsalat
2006-06-01, 00:00:53
Hallo,

Gibt es die Möglichkeit Attribute (einigen evtl. unter dem Begriff Annotationen besser bekannt, da Attribut z.B. in der Java-Welt als Begriff für einen Member verwendet wird) zu vererben? I.d.R. macht das zwar keinen Sinn, da ein Attribut eben genau ein bestimmtes Code-Objekt beschreiben soll, aber für einige Attribute wäre es jedoch hilfreich (z.B. ParseChildrenAttribute). Gibt es eine Möglichkeit diese Vererbung zu erzwingen, oder ist das gänzlich unmöglich?

Danke für eure Hilfe

Kabelsalat

SgtTynis
2006-06-01, 08:34:53
Geht. Man muss den erstellten Attributtyp selber via AttributeUsageAttribute und dem setzen von Inherited auf true dazu verdonnern.

[AttributeUsage(Inherited = true)]
public class MyAttributeAttribute : Attribute
{
...
}

Bei der Abfrage der Attribute via GetCustomAttributes muss man dann auch noch aufpassen, da man hier auch das Durchsuchen der Klassenhierachie erzwingen muss:

GetCustomAttributes(true);

Kabelsalat
2006-06-01, 10:13:27
Gibt es auch die Möglichkeit für bestehende (sealed) Attribute das vererben zu erzwingen?

SgtTynis
2006-06-01, 13:49:46
Faellt mir so spontan erst mal keine Moeglichkeit ein.

Kabelsalat
2006-06-01, 13:53:43
Schade. Dann muss ich wohl eine alternative Lösung finden. Auf jeden Fall vielen Dank für den allgemeinen Hinweis zur Vererbung - bisher war mir das noch unbekannt.