Attribute.IsDefined Method (ParameterInfo, Type, Boolean)


Determines whether any custom attributes are applied to a method parameter. Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

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

public static bool IsDefined(
	ParameterInfo element,
	Type attributeType,
	bool inherit


Type: System.Reflection.ParameterInfo

An object derived from the ParameterInfo class that describes a parameter of a member of a class.

Type: System.Type

The type, or a base type, of the custom attribute to search for.

Type: System.Boolean

If true, specifies to also search the ancestors of element for custom attributes.

Return Value

Type: System.Boolean

true if a custom attribute of type attributeType is applied to element; otherwise, false.

Exception Condition

element or attributeType is null.


attributeType is not derived from Attribute.


element is not a method, constructor, or type.

The following code example illustrates the use of IsDefined, taking a ParameterInfo as a parameter.

using System;
using System.Reflection;

namespace IsDef5CS 
    public class TestClass 
        // Assign a ParamArray attribute to the parameter using the keyword.
        public void Method1(params String[] args)

    public class DemoClass 
        static void Main(string[] args) 
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // Get the ParameterInfo array for the method parameters.
            ParameterInfo[] pInfo = mInfo.GetParameters();
            if (pInfo != null) 
                // See if the ParamArray attribute is defined.
                bool isDef = Attribute.IsDefined(pInfo[0], 
                // Display the result.
                Console.WriteLine("The ParamArray attribute {0} defined for " +
                                  "parameter {1} of method {2}.",
                                  isDef ? "is" : "is not",
                Console.WriteLine("The parameters information could " +
                            "not be retrieved for method {0}.", mInfo.Name);

 * Output:
 * The ParamArray attribute is defined for parameter args of method Method1.

.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top