EnumBuilder.GetCustomAttributes Method (Type, Boolean)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Returns the custom attributes identified by the given type.

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

public override object[] GetCustomAttributes(
	Type attributeType,
	bool inherit


Type: System.Type

The Type object to which the custom attributes are applied.

Type: System.Boolean

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

Return Value

Type: System.Object[]

Returns an array of objects representing the attributes of this constructor that are of TypeattributeType.

Exception Condition

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 MemberInfo.GetCustomAttributes on the returned Type.

The following code sample illustrates the use of GetCustomAttribute in the context of EnumBuilder.

[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class MyAttribute : Attribute
   public String myString;
   public int myInteger;

   public MyAttribute(String myString1, int myInteger1)
      this.myString = myString1;
      this.myInteger = myInteger1;

class MyApplication
   static AssemblyBuilder myAssemblyBuilder;
   static EnumBuilder myEnumBuilder;

   public static void Main()
            object[] myAttributesArray = myEnumBuilder.GetCustomAttributes(typeof(MyAttribute),false);
            Console.WriteLine("Custom attribute contains: ");
            // Read the attributes and display them on the console.
            for(int index=0; index < myAttributesArray.Length; index++)
               if(myAttributesArray[index] is MyAttribute)
                  Console.WriteLine("The value of myString  is: "
                                    + ((MyAttribute)myAttributesArray[index]).myString);
                  Console.WriteLine("The value of myInteger is: "
                                    + ((MyAttribute)myAttributesArray[index]).myInteger);
            Console.WriteLine("Custom Attributes are not set for the EnumBuilder");
      catch(Exception e)
         Console.WriteLine("The following exception is raised:" +e.Message);


   private static void CreateCallee(AppDomain domain)
      // Create a name for the assembly.
      AssemblyName myAssemblyName = new AssemblyName();
      myAssemblyName.Name = "EmittedAssembly";

      // Create the dynamic assembly.
      myAssemblyBuilder = domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run);

      Type myType = typeof(MyAttribute);
      ConstructorInfo myInfo = myType.GetConstructor(new Type[2]{typeof(String), typeof(int)});
      CustomAttributeBuilder myCustomAttributeBuilder =
                                    new CustomAttributeBuilder(myInfo, new object[2]{"Hello", 2});

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


.NET Framework
Available since 1.1
Available since 2.0
Return to top