Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

EnumBuilder::SetCustomAttribute Method (CustomAttributeBuilder^)

 

Sets a custom attribute using a custom attribute builder.

Namespace:   System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

public:
void SetCustomAttribute(
	CustomAttributeBuilder^ customBuilder
)

Parameters

customBuilder
Type: System.Reflection.Emit::CustomAttributeBuilder^

An instance of a helper class to define the custom attribute.

Exception Condition
ArgumentNullException

con is null.

The following code sample illustrates the use of SetCustomAttribute in the context of EnumBuilder, passing a CustomAttributeBuilder.

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
Return to top
Show:
© 2017 Microsoft