Types de paramètre d’attribut (C++/CLI et C++/CX)
Les valeurs passées aux attributs doivent être connues du compilateur au moment de la compilation. Les paramètres d’attribut peuvent appartenir aux types suivants :
bool
char
,unsigned char
short
,unsigned short
int
,unsigned int
long
,unsigned long
__int64
, __int64 non signéfloat
,double
wchar_t
char*
ouwchar_t*
ouSystem::String*
System::Type ^
System::Object ^
enum
Exemple : types de paramètres d’attribut
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 : les arguments nommés non nommés précèdent les arguments nommés
Description
Lorsque vous spécifiez des attributs, tous les arguments (positionnels) non nommés doivent précéder 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 : paramètre d’attribut de tableau unidimensionnel
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour