Attribute in C# 👍 👎

Attribute in C# sind eine komfortable Möglichkeit, um Klassen, Methoden und andere Member mit Metadaten anzureichern. Diese können anschließend während der Laufzeit per Reflexion ausgewertet werden.

Konkret möchten wir ein Attribut Description erzeugen, mit welchem wir Methoden eine Beschreibung geben können. Wir müssen uns dazu lediglich eine von Attribute abgeleitete Klasse erstellen, die die entsprechende Information aufnehmen kann:
"Description"-Attribut definieren
0102030405060708091011
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]public class Description : Attribute {    public string Text {        get;        set;    }
public Description(string text) { this.Text = text; }}
Über das AttributeUsage-Attribut legen wir dabei fest, dass das Attribut lediglich (einmal) für eine Methode Verwendung finden können soll.

Nun setzen wir das Attribut für die Methode StartImportantAction einer Klasse ImportantClass:
"Description"-Attribut setzen
0102030405060708
public class ImportantClass {    [Description("Führt eine wichtige Aktion aus!")]    public void StartImportantAction() {        /**         * Aktion ausführen        **/    }}
Anschließend können wir jederzeit von anderer Stelle aus auf diese Information zugreifen:
"Description"-Attribut abrufen
0102030405060708
  // MethodInfo ermittelnMethodInfo methodInfo = typeof(ImportantClass).GetMethod("StartImportantAction");
// "Description"-Attribut ermittelnDescription description = methodInfo.GetCustomAttribute<Description>();
// Beschreibung auslesenstring text = description.Text; // "Führt eine wichtige Aktion aus!"
Auf ähnliche Art und Weise entsteht beispielsweise automatisch die Schnittstellenbeschreibung von BitStadt.de. Im MSDN findet sich auch eine Übersicht allgemeiner Attribute des .NET-Frameworks.


Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche