EnumBuilder::SetCustomAttribute Method (ConstructorInfo^, array<Byte>^)
.NET Framework (current version)
Sets a custom attribute using a specified custom attribute blob.
Assembly: mscorlib (in mscorlib.dll)
public: [ComVisibleAttribute(true)] void SetCustomAttribute( ConstructorInfo^ con, array<unsigned char>^ binaryAttribute )
Parameters
- con
-
Type:
System.Reflection::ConstructorInfo^
The constructor for the custom attribute.
- binaryAttribute
-
Type:
array<System::Byte>^
A byte blob representing the attributes.
| Exception | Condition |
|---|---|
| ArgumentNullException | con or binaryAttribute is null. |
See the metadata specification in the ECMA Partition II documentation for details on how to format binaryAttribute. The documentation is available online; see ECMA C# and Common Language Infrastructure Standards on MSDN and Standard ECMA-335 - Common Language Infrastructure (CLI) on the Ecma International Web site.
The following code sample illustrates the use of SetCustomAttribute in the context of EnumBuilder, passing a byte blob.
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: