EnumBuilder.GetCustomAttributes Method (Type, Boolean)

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
)

Parameters

attributeType
Type: System.Type

The Type object to which the custom attributes are applied.

inherit
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 Type attributeType.

Implements

ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)
_MemberInfo.GetCustomAttributes(Type, Boolean)

ExceptionCondition
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 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()
   {
      try
      {
         CreateCallee(Thread.GetDomain());
         if(myEnumBuilder.IsDefined(typeof(MyAttribute),false))
         {
            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);
               }
            }
         }
         else
         {
            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);

      myEnumBuilder.CreateType();
      myEnumBuilder.SetCustomAttribute(myCustomAttributeBuilder);
   }
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, 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.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft