EnumBuilder.SetCustomAttribute Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Sets custom attributes for this constructor.
Overloads
SetCustomAttribute(ConstructorInfo, Byte[]) |
Sets a custom attribute using a specified custom attribute blob. |
SetCustomAttribute(CustomAttributeBuilder) |
Sets a custom attribute using a custom attribute builder. |
SetCustomAttribute(ConstructorInfo, Byte[])
- Source:
- EnumBuilder.cs
- Source:
- EnumBuilder.cs
- Source:
- EnumBuilder.cs
Sets a custom attribute using a specified custom attribute blob.
public:
void SetCustomAttribute(System::Reflection::ConstructorInfo ^ con, cli::array <System::Byte> ^ binaryAttribute);
public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
[System.Runtime.InteropServices.ComVisible(true)]
public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
member this.SetCustomAttribute : System.Reflection.ConstructorInfo * byte[] -> unit
[<System.Runtime.InteropServices.ComVisible(true)>]
member this.SetCustomAttribute : System.Reflection.ConstructorInfo * byte[] -> unit
Public Sub SetCustomAttribute (con As ConstructorInfo, binaryAttribute As Byte())
Parameters
- con
- ConstructorInfo
The constructor for the custom attribute.
- binaryAttribute
- Byte[]
A byte blob representing the attributes.
- Attributes
Exceptions
con
or binaryAttribute
is null
.
Examples
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();
}
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
Remarks
For information on how to format binaryAttribute
, see the metadata specification in Partition II of the Common Language Infrastructure (CLI) specification.
Applies to
SetCustomAttribute(CustomAttributeBuilder)
- Source:
- EnumBuilder.cs
- Source:
- EnumBuilder.cs
- Source:
- EnumBuilder.cs
Sets a custom attribute using a custom attribute builder.
public:
void SetCustomAttribute(System::Reflection::Emit::CustomAttributeBuilder ^ customBuilder);
public void SetCustomAttribute (System.Reflection.Emit.CustomAttributeBuilder customBuilder);
member this.SetCustomAttribute : System.Reflection.Emit.CustomAttributeBuilder -> unit
Public Sub SetCustomAttribute (customBuilder As CustomAttributeBuilder)
Parameters
- customBuilder
- CustomAttributeBuilder
An instance of a helper class to define the custom attribute.
Exceptions
con
is null
.
Examples
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();
}
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