Freigeben über


Gewusst wie: Bereitstellen von Metadatenbeschreibungen zur Komponente

Aktualisiert: November 2007

Mithilfe von Attributen können Sie beschreibende Metadaten über die Komponente zur Verfügung stellen. Attribute sind spezialisierte Klassen, die auf Codeelemente angewendet werden. Beim Kompilieren werden Attribute in Metadaten ausgegeben, die über den System.Reflection-Namespace für die Common Language Runtime oder benutzerdefinierte Tools und Anwendungen verfügbar sind.

Attribute werden einer Komponente angehängt, indem der Komponente ein Verweis auf das Attribut vorangestellt wird und relevante Parameter oder Flags angegeben werden. Dieser Aufruf an den Konstruktor wird in Visual Basic in spitze Klammern <> und in C# in eckige Klammern [] gesetzt.

Attributklassen enden immer auf "Attribute". Ein Beispiel dafür liefern die Klassen DescriptionAttribute, ObsoleteAttribute und BrowsableAttribute. Bei vielen Sprachen, die auf die Common Language Runtime abzielen, einschließlich Visual Basic und C#, muss nicht der vollständige Name des Attributs angegeben werden. ObsoleteAttribute kann im Code beispielsweise als Obsolete vorkommen.

So fügen Sie der Komponente ein vorhandenes Attribut an

  1. Ermitteln Sie, welche Attribute für die Komponente erforderlich sind.

  2. Fügen Sie die Attribute an die Komponente an. Beachten Sie, dass Sie entweder den vollständigen Namen des Attributs verwenden oder die entsprechende Imports (using)-Anweisung hinzufügen müssen. Das folgende Beispiel veranschaulicht, wie das DescriptionAttribute-Attribut angehängt wird:

    Imports System.ComponentModel
    <Description("This is a description string")> Public Class TheClass
    End Class
    
    using System.ComponentModel;
    [Description("This is a description string")]
    public class TheClass
    {
    }
    

Benutzerdefinierte Attribute

Sie können auch eigene Attribute erstellen, die von Attribute erben, und diese Attribute für benutzerdefinierte Tools oder Anwendungen verwenden. Dieser Basisklasse können beliebige benutzerdefinierte Eigenschaften oder Methoden hinzugefügt werden, die von der Anwendung benötigt werden.

So erstellen Sie ein benutzerdefiniertes Attribut und wenden es an

  1. Erstellen Sie eine Klasse, die von Attribute erbt.

    Public Class WidgetAttribute
       Inherits System.Attribute
    End Class
    
    public class WidgetAttribute: System.Attribute
    {
    }
    
  2. Ermitteln Sie, welche Eigenschaften und Methoden das Attribut benötigt, und schreiben Sie den Code dafür. Im folgenden Beispiel wird eine WidgetType-Eigenschaft erstellt, die im Konstruktor der WidgetAttribute-Klasse festgelegt wird. DasAttributeUsageAttribute-Attribut legt die Codemember fest, die als Ziel für das Attribut verwendet werden können.

    <AttributeUsage(System.AttributeTargets.Class)> Public Class _
       WidgetAttribute
       Inherits System.Attribute
       Private mWidgetType as WidgetTypeEnum
       ' Creates a readonly property for the WidgetAttribute class.
       Public ReadOnly Property WidgetType as WidgetTypeEnum
          Get
             Return mWidgetType
          End Get
       End Property
       ' Creates a constructor that accepts a parameter and assigns the 
       ' value of that parameter to the WidgetType property.
       Public Sub New(type as WidgetTypeEnum)
          MyBase.New()
          mWidgetType = type
       End Sub
    End Class
    
    [AttributeUsage(System.AttributeTargets.Class)]
    public class WidgetAttribute: System.Attribute
    {
       private WidgetTypeEnum widgetType;
    
       // Creates a readonly property for the WidgetAttribute class.
       public WidgetTypeEnum WidgetType
          {
             get {return widgetType;}
          }
    
       public WidgetAttribute(WidgetTypeEnum type): base()
          {
             widgetType = type;
          }
    }
    
  3. Wenden Sie dieses Attribut wie ein beliebiges Attribut an. Achten Sie darauf, alle erforderlichen Parameter anzugeben.

    <WidgetAttribute(WidgetTypeEnum.VerticalWidget)> _
       Public Class WidgetFortyFive
    End Class
    
    [WidgetAttribute(WidgetTypeEnum.VerticalWidget)]
    public class WidgetFortyFive
    {
    }
    

Siehe auch

Aufgaben

Gewusst wie: Bereitstellen von Metadaten für Eigenschaften, Methoden und Ereignisse von Komponenten

Konzepte

Zugreifen auf benutzerdefinierte Attribute

Abrufen von Informationen aus Attributen

Referenz

Attribute

Weitere Ressourcen

Benutzerhilfe für Komponenten