Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Attributverwendungs Parameterbezeichner Attribut können Sie Ziele angeben.Jedes Attribut definiert wird, die auf spezifische Sprachelemente angewendet werden sollen.Beispielsweise würde ein Attribut definiert werden, dass sie nur für Klassen und Strukturen angewendet werden sollen.In der folgenden Liste sind die möglichen syntaktischen Elemente an, bei denen ein benutzerdefiniertes Attribut verwendet werden kann.Kombinationen dieser Werte (mit dem logischen oder) verwendet werden.
So Attributziel angegeben werden, um eine oder mehrere AttributeTargets Enumeratoren auf AttributeUsageAttribute zu übergeben, wenn das Attribut definiert ist.
Im Folgenden finden Sie eine Liste der gültigen Attribut Ziele:
Target |
Verwendungsbeispiel |
|---|---|
Alle (gilt für alle Konstrukte) |
|
Assembly (gilt für eine Assembly als Ganzes) |
|
Modul (gilt für ein Modul als Ganzes) |
|
Klasse |
|
Struktur |
|
enum |
|
Konstruktor |
|
Methode |
|
Eigenschaft |
|
Feld |
|
Ereignis |
|
Schnittstelle |
|
Parameter |
|
Delegat |
|
ReturnValue |
|
In der Regel wird ein Attribut direkt auf das Sprachelement voran, auf das es angewendet wird.In einigen Fällen jedoch ist die Position eines Attributs nicht ausreichend, um das beabsichtigte Ziel des Attributs zu bestimmen.Betrachten Sie das folgende Beispiel:
[Attr] int MyFn(double x)...
Syntaktisch zu kommunizieren, ist es nicht möglich, wenn das Attribut bestimmt ist, an die Methode oder den Rückgabewert der Methode angewendet wird (in diesem Fall übergibt dieses an die Methode.)In solchen Fällen wird ein Attributverwendungs Formatbezeichner verwenden kann.Um beispielsweise das Attribut auf den Rückgabewert angewendet werden soll, verwenden Sie den returnvalue Bezeichner wie folgt:
[returnvalue:Attr] int MyFn(double x)... // applies to return value
Attributverwendungs Parameterbezeichner sind in den folgenden Fällen erforderlich:
So erstellen Sie eine Erfassen oder auf Modulebene ein Attribut angeben.
So geben Sie an, dass ein Attribut auf den Rückgabewert einer Methode gilt, jedoch nicht die Methode:
[method:Attr] int MyFn(double x)... // Attr applies to method [returnvalue:Attr] int MyFn(double x)...// Attr applies to return value [Attr] int MyFn(double x)... // default: methodSo geben Sie an, dass ein Attribut auf den Accessor einer Eigenschaft die Eigenschaft nicht angewendet werden kann:
[method:MyAttr(123)] property int Property() [property:MyAttr(123)] property int Property() [MyAttr(123)] property int get_MyPropy() // default: propertySo geben Sie an, dass ein Attribut auf den Accessor eines Ereignisses, gilt das Ereignis nicht:
delegate void MyDel(); ref struct X { [field:MyAttr(123)] event MyDel* MyEvent; //field [event:MyAttr(123)] event MyDel* MyEvent; //event [MyAttr(123)] event MyDel* MyEvent; // default: event }
Ein Attributverwendungs Parameterbezeichner gilt nur für das Attribut zu, das ihm unmittelbar folgt. d. h.
[returnvalue:Attr1, Attr2]
ist unterschiedlich
[returnvalue:Attr1, returnvalue:Attr2]
Beispiel
Beschreibung
In diesem Beispiel wird gezeigt, wie mehrere Ziele angibt.
Code
// attribute_targets.cpp
// compile with: /clr /c
using namespace System;
[AttributeUsage(AttributeTargets::Class | AttributeTargets::Struct, AllowMultiple = true )]
ref struct Attr : public Attribute {
Attr(bool i){}
Attr(){}
};
[Attr]
ref class MyClass {};
[Attr]
[Attr(true)]
value struct MyStruct {};
Siehe auch
Referenz
Benutzerdefinierte Attribute (Komponentenerweiterungen für C++)