EnumBuilder.GetCustomAttributes Method (Boolean)

Returns all the custom attributes defined for this constructor.

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

public override Object[] GetCustomAttributes (
	bool inherit
)
public Object[] GetCustomAttributes (
	boolean inherit
)
public override function GetCustomAttributes (
	inherit : boolean
) : Object[]

Parameters

inherit

Specifies whether to search this member's inheritance chain to find the attributes.

Return Value

Returns an array of objects representing all the custom attributes of the constructor represented by this ConstructorBuilder instance.

Exception typeCondition

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 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});
      
   }
}

import System.*;
import System.Threading.*;
import System.Reflection.*;
import System.Reflection.Emit.*;

/** @attribute AttributeUsage(AttributeTargets.All, AllowMultiple = false)
 */
public class MyAttribute extends Attribute
{
    public boolean myBoolValue;

    public MyAttribute(boolean myBool)
    {
        this.myBoolValue = myBool;
    } //MyAttribute
} //MyAttribute

class MyApplication
{
    private static EnumBuilder myEnumBuilder;

    public static void main(String[] args)
    {
        try {
            CreateCallee(System.Threading.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.get_Item(index) instanceof MyAttribute) {
                    Console.WriteLine("myBoolValue: " 
                        + (System.Boolean)((MyAttribute)myAttributesArray.
                        get_Item(index)).myBoolValue);
                }
            }
        }
        catch (System.Exception e) {
            Console.WriteLine("The following exception is raised:"
                + e.get_Message());
        }
    } //main

    private static void CreateCallee(AppDomain domain)
    {
        AssemblyName myAssemblyName = new AssemblyName();

        // Create a name for the assembly.
        myAssemblyName.set_Name("EmittedAssembly");

        // Create the dynamic assembly.
        AssemblyBuilder myAssemblyBuilder = domain.
            DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run);
        Type myType = MyAttribute.class.ToType();
        ConstructorInfo myInfo = myType.
            GetConstructor(new Type[] { boolean.class.ToType() });

        // Create a dynamic module.
        ModuleBuilder myModuleBuilder = myAssemblyBuilder.
            DefineDynamicModule("EmittedModule");

        // Create a dynamic Enum.
        myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.MyEnum",
            TypeAttributes.Public, Int32.class.ToType());

        FieldBuilder myFieldBuilder1 = myEnumBuilder.DefineLiteral("FieldOne",
            (Int32)1);
        FieldBuilder myFieldBuilder2 = myEnumBuilder.DefineLiteral("FieldTwo",
            (Int32)2);
        myEnumBuilder.CreateType();
        myEnumBuilder.SetCustomAttribute(myInfo, new ubyte[] { 1, 0, 1 });
    } //CreateCallee 
} //MyApplication

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0
Show: