EnumBuilder::GetCustomAttributes Method (Boolean)
.NET Framework (current version)
Returns all the custom attributes defined for this constructor.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- inherit
-
Type:
System::Boolean
Specifies whether to search this member's inheritance chain to find the attributes.
Return Value
Type: array<System::Object^>^Returns an array of objects representing all the custom attributes of the constructor represented by this ConstructorBuilder instance.
| Exception | Condition |
|---|---|
| NotSupportedException | This method is not currently supported in types that are not complete. |
As a workaround, to retrieve the custom attributes of a finished type, retrieve the type using Type::GetType and call GetCustomAttributes on the returned Type.
The following code sample illustrates the use of GetCustomAttribute in the context of 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(); }
.NET Framework
Available since 1.1
Silverlight
Available since 2.0
Available since 1.1
Silverlight
Available since 2.0
Show: