EnumBuilder.SetCustomAttribute Method (CustomAttributeBuilder)
.NET Framework 4.5
Sets a custom attribute using a custom attribute builder.
Namespace: System.Reflection.Emit
Assembly: mscorlib (in mscorlib.dll)
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 System; using System.Threading; using System.Reflection; using System.Reflection.Emit; [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] public class MyAttribute : Attribute { public bool myBoolValue; public MyAttribute(bool myBool) { this.myBoolValue = myBool; } } class MyApplication { 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 MyAttribute) { Console.WriteLine("myBoolValue: " + ((MyAttribute)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(MyAttribute); 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}); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.