EnumBuilder.GetCustomAttributes 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
해당 생성자에 대해 정의된 사용자 지정 특성을 반환합니다.
오버로드
GetCustomAttributes(Boolean) |
이 생성자에 대해 정의된 모든 사용자 지정 특성을 반환합니다. |
GetCustomAttributes(Type, Boolean) |
지정된 형식으로 식별되는 사용자 지정 특성을 반환합니다. |
GetCustomAttributes(Boolean)
- Source:
- EnumBuilder.cs
이 생성자에 대해 정의된 모든 사용자 지정 특성을 반환합니다.
public:
override cli::array <System::Object ^> ^ GetCustomAttributes(bool inherit);
public override object[] GetCustomAttributes (bool inherit);
override this.GetCustomAttributes : bool -> obj[]
Public Overrides Function GetCustomAttributes (inherit As Boolean) As Object()
매개 변수
- inherit
- Boolean
이 멤버의 상속 체인을 검색하여 특성을 찾을지 여부를 지정합니다.
반환
이 ConstructorBuilder 인스턴스로 나타내는 생성자의 모든 사용자 지정 특성을 나타내는 개체 배열을 반환합니다.
예외
이 메서드는 완전하지 않은 형식에서 현재 지원되지 않습니다.
설명
해결 방법으로 완성된 형식의 사용자 지정 특성을 검색하려면 를 사용하여 Type.GetType 형식을 검색하고 반환Type된 에서 를 호출 GetCustomAttributes 합니다.
다음 코드 샘플에서는 의 컨텍스트에서 를 GetCustomAttribute
사용하는 것을 보여 줍니다 EnumBuilder.
using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
[AttributeUsage(AttributeTargets::All,AllowMultiple=false)]
public ref class MyAttribute: public Attribute
{
public:
bool myBoolValue;
MyAttribute( bool myBool )
{
this->myBoolValue = myBool;
}
};
ref class MyApplication
{
private:
static EnumBuilder^ myEnumBuilder;
public:
static void Main()
{
try
{
CreateCallee( Thread::GetDomain() );
array<Object^>^myAttributesArray = myEnumBuilder->GetCustomAttributes( true );
// Read the attributes and display them on the console.
Console::WriteLine( "Custom attribute contains: " );
for ( int index = 0; index < myAttributesArray->Length; index++ )
{
if ( dynamic_cast<MyAttribute^>(myAttributesArray[ index ]) )
{
Console::WriteLine( "myBoolValue: {0}", (dynamic_cast<MyAttribute^>(myAttributesArray[ index ]))->myBoolValue );
}
}
}
catch ( Exception^ e )
{
Console::WriteLine( "The following exception is raised:{0}", e->Message );
}
}
private:
static void CreateCallee( AppDomain^ domain )
{
AssemblyName^ myAssemblyName = gcnew AssemblyName;
// Create a name for the assembly.
myAssemblyName->Name = "EmittedAssembly";
// Create the dynamic assembly.
AssemblyBuilder^ myAssemblyBuilder = domain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::Run );
Type^ myType = MyAttribute::typeid;
array<Type^>^temp0 = {bool::typeid};
ConstructorInfo^ myInfo = myType->GetConstructor( temp0 );
// Create a dynamic module.
ModuleBuilder^ myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "EmittedModule" );
// Create a dynamic Enum.
myEnumBuilder = myModuleBuilder->DefineEnum( "MyNamespace.MyEnum", TypeAttributes::Public, Int32::typeid );
FieldBuilder^ myFieldBuilder1 = myEnumBuilder->DefineLiteral( "FieldOne", 1 );
FieldBuilder^ myFieldBuilder2 = myEnumBuilder->DefineLiteral( "FieldTwo", 2 );
myEnumBuilder->CreateType();
array<Byte>^temp1 = {01,00,01};
myEnumBuilder->SetCustomAttribute( myInfo, temp1 );
}
};
int main()
{
MyApplication::Main();
}
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class MyAttribute2 : Attribute
{
public bool myBoolValue;
public MyAttribute2(bool myBool)
{
this.myBoolValue = myBool;
}
}
class MyApplication2
{
static EnumBuilder myEnumBuilder;
public static void Main()
{
try
{
CreateCallee(Thread.GetDomain());
object[] myAttributesArray = myEnumBuilder.GetCustomAttributes(true);
// Read the attributes and display them on the console.
Console.WriteLine("Custom attribute contains: ");
for(int index=0; index < myAttributesArray.Length; index++)
{
if(myAttributesArray[index] is MyAttribute2)
{
Console.WriteLine("myBoolValue: " +
((MyAttribute2)myAttributesArray[index]).myBoolValue);
}
}
}
catch(Exception e)
{
Console.WriteLine("The following exception is raised:" +e.Message);
}
}
private static void CreateCallee(AppDomain domain)
{
AssemblyName myAssemblyName = new AssemblyName();
// Create a name for the assembly.
myAssemblyName.Name = "EmittedAssembly";
// Create the dynamic assembly.
AssemblyBuilder myAssemblyBuilder
= domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run);
Type myType = typeof(MyAttribute2);
ConstructorInfo myInfo = myType.GetConstructor(new Type[]{typeof(bool)});
// Create a dynamic module.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule");
// Create a dynamic Enum.
myEnumBuilder =
myModuleBuilder.DefineEnum("MyNamespace.MyEnum", TypeAttributes.Public, typeof(Int32));
FieldBuilder myFieldBuilder1 = myEnumBuilder.DefineLiteral("FieldOne", 1);
FieldBuilder myFieldBuilder2 = myEnumBuilder.DefineLiteral("FieldTwo", 2);
myEnumBuilder.CreateType();
myEnumBuilder.SetCustomAttribute(myInfo, new byte[]{01,00,01});
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
<AttributeUsage(AttributeTargets.All, AllowMultiple := False)> _
Public Class MyAttribute
Inherits Attribute
Public myBoolValue As Boolean
Public Sub New(myBool As Boolean)
Me.myBoolValue = myBool
End Sub
End Class
Class MyApplication
Private Shared myEnumBuilder As EnumBuilder
Public Shared Sub Main()
Try
CreateCallee(Thread.GetDomain())
Dim myAttributesArray As Object() = myEnumBuilder.GetCustomAttributes(True)
' Read the attributes and display them on the console.
Console.WriteLine("Custom attribute contains: ")
Dim index As Integer
For index = 0 To myAttributesArray.Length - 1
If TypeOf myAttributesArray(index) Is MyAttribute Then
Console.WriteLine("myBoolValue: " + CType(myAttributesArray(index), MyAttribute). _
myBoolValue.ToString())
End If
Next index
Catch e As Exception
Console.WriteLine("The following exception is raised:" + e.Message)
End Try
End Sub
Private Shared Sub CreateCallee(domain As AppDomain)
Dim myAssemblyName As New AssemblyName()
' Create a name for the assembly.
myAssemblyName.Name = "EmittedAssembly"
' Create the dynamic assembly.
Dim myAssemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(myAssemblyName, _
AssemblyBuilderAccess.Run)
Dim myType As Type = GetType(MyAttribute)
Dim myInfo As ConstructorInfo = myType.GetConstructor(New Type() {GetType(Boolean)})
' Create a dynamic module.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule")
' Create a dynamic Enum.
myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.MyEnum", TypeAttributes.Public, _
GetType(Int32))
Dim myFieldBuilder1 As FieldBuilder = myEnumBuilder.DefineLiteral("FieldOne", 1)
Dim myFieldBuilder2 As FieldBuilder = myEnumBuilder.DefineLiteral("FieldTwo", 2)
myEnumBuilder.CreateType()
myEnumBuilder.SetCustomAttribute(myInfo, New Byte() {1, 0, 1})
End Sub
End Class
적용 대상
GetCustomAttributes(Type, Boolean)
- Source:
- EnumBuilder.cs
지정된 형식으로 식별되는 사용자 지정 특성을 반환합니다.
public:
override cli::array <System::Object ^> ^ GetCustomAttributes(Type ^ attributeType, bool inherit);
public override object[] GetCustomAttributes (Type attributeType, bool inherit);
override this.GetCustomAttributes : Type * bool -> obj[]
Public Overrides Function GetCustomAttributes (attributeType As Type, inherit As Boolean) As Object()
매개 변수
- attributeType
- Type
사용자 지정 특성이 적용되는 Type
개체입니다.
- inherit
- Boolean
이 멤버의 상속 체인을 검색하여 특성을 찾을지 여부를 지정합니다.
반환
Type
attributeType
인 해당 생성자의 특성을 나타내는 개체의 배열을 반환합니다.
예외
이 메서드는 완전하지 않은 형식에서 현재 지원되지 않습니다.
설명
해결 방법으로 완성된 형식의 사용자 지정 특성을 검색하려면 를 사용하여 Type.GetType 형식을 검색하고 반환Type된 에서 를 호출 MemberInfo.GetCustomAttributes 합니다.
다음 코드 샘플에서는 의 컨텍스트에서 를 GetCustomAttribute
사용하는 것을 보여 줍니다 EnumBuilder.
[AttributeUsage(AttributeTargets::All,AllowMultiple=false)]
public ref class MyAttribute: public Attribute
{
public:
String^ myString;
int myInteger;
MyAttribute( String^ myString1, int myInteger1 )
{
this->myString = myString1;
this->myInteger = myInteger1;
}
};
ref class MyApplication
{
private:
static AssemblyBuilder^ myAssemblyBuilder;
static EnumBuilder^ myEnumBuilder;
public:
static void Main()
{
try
{
CreateCallee( Thread::GetDomain() );
if ( myEnumBuilder->IsDefined( MyAttribute::typeid, false ) )
{
array<Object^>^myAttributesArray = myEnumBuilder->GetCustomAttributes( MyAttribute::typeid, false );
Console::WriteLine( "Custom attribute contains: " );
// Read the attributes and display them on the console.
for ( int index = 0; index < myAttributesArray->Length; index++ )
{
if ( dynamic_cast<MyAttribute^>(myAttributesArray[ index ]) )
{
Console::WriteLine( "The value of myString is: {0}", (dynamic_cast<MyAttribute^>(myAttributesArray[ index ]))->myString );
Console::WriteLine( "The value of myInteger is: {0}", (dynamic_cast<MyAttribute^>(myAttributesArray[ index ]))->myInteger );
}
}
}
else
{
Console::WriteLine( "Custom Attributes are not set for the EnumBuilder" );
}
}
catch ( Exception^ e )
{
Console::WriteLine( "The following exception is raised:{0}", e->Message );
}
}
private:
static void CreateCallee( AppDomain^ domain )
{
// Create a name for the assembly.
AssemblyName^ myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "EmittedAssembly";
// Create the dynamic assembly.
myAssemblyBuilder = domain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::Run );
Type^ myType = MyAttribute::typeid;
array<Type^>^temp0 = {String::typeid,int::typeid};
ConstructorInfo^ myInfo = myType->GetConstructor( temp0 );
array<Object^>^temp1 = {"Hello",2};
CustomAttributeBuilder^ myCustomAttributeBuilder = gcnew CustomAttributeBuilder( myInfo,temp1 );
// Create a dynamic module.
ModuleBuilder^ myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "EmittedModule" );
// Create a dynamic Enum.
myEnumBuilder = myModuleBuilder->DefineEnum( "MyNamespace.MyEnum", TypeAttributes::Public, Int32::typeid );
FieldBuilder^ myFieldBuilder1 = myEnumBuilder->DefineLiteral( "FieldOne", 1 );
FieldBuilder^ myFieldBuilder2 = myEnumBuilder->DefineLiteral( "FieldTwo", 2 );
myEnumBuilder->CreateType();
myEnumBuilder->SetCustomAttribute( myCustomAttributeBuilder );
}
};
int main()
{
MyApplication::Main();
}
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class MyAttribute : Attribute
{
public String myString;
public int myInteger;
public MyAttribute(String myString1, int myInteger1)
{
this.myString = myString1;
this.myInteger = myInteger1;
}
}
class MyApplication
{
static AssemblyBuilder myAssemblyBuilder;
static EnumBuilder myEnumBuilder;
public static void Main()
{
try
{
CreateCallee(Thread.GetDomain());
if(myEnumBuilder.IsDefined(typeof(MyAttribute),false))
{
object[] myAttributesArray = myEnumBuilder.GetCustomAttributes(typeof(MyAttribute),false);
Console.WriteLine("Custom attribute contains: ");
// Read the attributes and display them on the console.
for(int index=0; index < myAttributesArray.Length; index++)
{
if(myAttributesArray[index] is MyAttribute)
{
Console.WriteLine("The value of myString is: "
+ ((MyAttribute)myAttributesArray[index]).myString);
Console.WriteLine("The value of myInteger is: "
+ ((MyAttribute)myAttributesArray[index]).myInteger);
}
}
}
else
{
Console.WriteLine("Custom Attributes are not set for the EnumBuilder");
}
}
catch(Exception e)
{
Console.WriteLine("The following exception is raised:" +e.Message);
}
}
private static void CreateCallee(AppDomain domain)
{
// Create a name for the assembly.
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "EmittedAssembly";
// Create the dynamic assembly.
myAssemblyBuilder = domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run);
Type myType = typeof(MyAttribute);
ConstructorInfo myInfo = myType.GetConstructor(new Type[2]{typeof(String), typeof(int)});
CustomAttributeBuilder myCustomAttributeBuilder =
new CustomAttributeBuilder(myInfo, new object[2]{"Hello", 2});
// Create a dynamic module.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule");
// Create a dynamic Enum.
myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.MyEnum", TypeAttributes.Public, typeof(Int32));
FieldBuilder myFieldBuilder1 = myEnumBuilder.DefineLiteral("FieldOne", 1);
FieldBuilder myFieldBuilder2 = myEnumBuilder.DefineLiteral("FieldTwo", 2);
myEnumBuilder.CreateType();
myEnumBuilder.SetCustomAttribute(myCustomAttributeBuilder);
}
}
<AttributeUsage(AttributeTargets.All, AllowMultiple := False)> _
Public Class MyAttribute
Inherits Attribute
Public myString As String
Public myInteger As Integer
Public Sub New(myString1 As String, myInteger1 As Integer)
Me.myString = myString1
Me.myInteger = myInteger1
End Sub
End Class
Class MyApplication
Private Shared myAssemblyBuilder As AssemblyBuilder
Private Shared myEnumBuilder As EnumBuilder
Public Shared Sub Main()
Try
CreateCallee(Thread.GetDomain())
If myEnumBuilder.IsDefined(GetType(MyAttribute), False) Then
Dim myAttributesArray As Object() = myEnumBuilder.GetCustomAttributes _
(GetType(MyAttribute), False)
Console.WriteLine("Custom attribute contains: ")
' Read the attributes and display them on the console.
Dim index As Integer
For index = 0 To myAttributesArray.Length - 1
If TypeOf myAttributesArray(index) Is MyAttribute Then
Console.WriteLine("The value of myString is: " + CType(myAttributesArray(index), _
MyAttribute).myString)
Console.WriteLine("The value of myInteger is: " + CType(myAttributesArray(index), _
MyAttribute).myInteger.ToString())
End If
Next index
Else
Console.WriteLine("Custom Attributes are not set for the EnumBuilder")
End If
Catch e As Exception
Console.WriteLine("The following exception is raised:" + e.Message)
End Try
End Sub
Private Shared Sub CreateCallee(domain As AppDomain)
' Create a name for the assembly.
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "EmittedAssembly"
' Create the dynamic assembly.
myAssemblyBuilder = domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run)
Dim myType As Type = GetType(MyAttribute)
Dim myInfo As ConstructorInfo = myType.GetConstructor(New Type(1) {GetType(String), _
GetType(Integer)})
Dim myCustomAttributeBuilder As New CustomAttributeBuilder(myInfo, New Object(1) {"Hello", 2})
' Create a dynamic module.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule")
' Create a dynamic Enum.
myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.MyEnum", TypeAttributes.Public, _
GetType(Int32))
Dim myFieldBuilder1 As FieldBuilder = myEnumBuilder.DefineLiteral("FieldOne", 1)
Dim myFieldBuilder2 As FieldBuilder = myEnumBuilder.DefineLiteral("FieldTwo", 2)
myEnumBuilder.CreateType()
myEnumBuilder.SetCustomAttribute(myCustomAttributeBuilder)
End Sub
End Class
적용 대상
.NET