다음을 통해 공유


특성 매개 변수 형식(C++ 구성 요소 확장)

컴파일 타임에 특성에 전달된 값은 컴파일러에 알려야 합니다. 특성 매개 변수는 다음과 같은 종류가 될 수 있습니다.

  • bool

  • char, unsigned char

  • short, unsigned short

  • int, unsigned int

  • long, unsigned long

  • __int64, unsigned __int64

  • float, double

  • wchar_t

  • char*, wchar_t* 또는 System::String*

  • System::Type ^

  • System::Object ^

  • enum

예제

코드

// 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
};

예제

설명

(위치)특성을 지정 하는 경우 명명 되지 않은 인수는 명명 된 인수 보다 빨라야 합니다.

코드

// 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

예제

설명

특성 매개 변수는 이전 형식의 1 차원 배열이 될 수 있습니다.

코드

// 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{};

참고 항목

참조

사용자 정의 특성(C++ 구성 요소 확장)