Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les valeurs passées aux attributs doivent être connues au compilateur au moment de la compilation.les paramètres d'attribut peuvent être des types suivants :
bool
char, unsigned char
short, unsigned short
int, unsigned int
long, unsigned long
__int64, unsigned __int64
float, double
wchar_t
char* ou wchar_t* ou System::String*
System::Type ^
System::Object ^
enum
Exemple
Code
// attribute_parameter_types.cpp
// compile with: /clr /c
using namespace System;
ref struct AStruct {};
[AttributeUsage(AttributeTargets::ReturnValue)]
ref struct Attr : public Attribute {
Attr(AStruct ^ i){}
Attr(bool i){}
Attr(){}
};
ref struct MyStruct {
static AStruct ^ x = gcnew AStruct;
[returnvalue:Attr(x)] int Test() { return 0; } // C3104
[returnvalue:Attr] int Test2() { return 0; } // OK
[returnvalue:Attr(true)] int Test3() { return 0; } // OK
};
Exemple
Description
En spécifiant les attributs, les arguments de position () tout sans nom doivent précéder tous les arguments nommés.
Code
// extending_metadata_c.cpp
// compile with: /clr /c
using namespace System;
[AttributeUsage(AttributeTargets::Class)]
ref class MyAttr : public Attribute {
public:
MyAttr() {}
MyAttr(int i) {}
property int Priority;
property int Version;
};
[MyAttr]
ref class ClassA {}; // No arguments
[MyAttr(Priority = 1)]
ref class ClassB {}; // Named argument
[MyAttr(123)]
ref class ClassC {}; // Positional argument
[MyAttr(123, Version = 1)]
ref class ClassD {}; // Positional and named
Exemple
Description
les paramètres d'attribut peuvent être des tableaux unidimensionnels des types précédents.
Code
// extending_metadata_d.cpp
// compile with: /clr /c
using namespace System;
[AttributeUsage(AttributeTargets::Class)]
public ref struct ABC : public Attribute {
ABC(array<int>^){}
array<double> ^ param;
};
[ABC( gcnew array<int> {1,2,3}, param = gcnew array<double>{2.71, 3.14})]
ref struct AStruct{};
Voir aussi
Référence
Attributs définis par l'utilisateur (extensions du composant C++)