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
)

Parameters

element
Type: System.Reflection::ParameterInfo^

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

attributeType
Type: System::Type^

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

inherit
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
ArgumentNullException

element or attributeType is null.

ArgumentException

attributeType is not derived from Attribute.

ExecutionEngineException

element is not a method, constructor, or type.

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

using namespace System;
using namespace System::Reflection;

namespace IsDef5CS
{
   public ref class TestClass
   {
   public:

      // Assign a ParamArray attribute to the parameter using the keyword.
      void Method1(... array<String^>^args ){}

   };

   ref class DemoClass
   {
   public:
      static void Main()
      {

         // Get the class type to access its metadata.
         Type^ clsType = TestClass::typeid;

         // Get the MethodInfo object for Method1.
         MethodInfo^ mInfo = clsType->GetMethod( "Method1" );

         // Get the ParameterInfo array for the method parameters.
         array<ParameterInfo^>^pInfo = mInfo->GetParameters();
         if ( pInfo != nullptr )
         {

            // See if the ParamArray attribute is defined.
            bool isDef = Attribute::IsDefined( pInfo[ 0 ], ParamArrayAttribute::typeid );

            // Display the result.
            Console::WriteLine( "The ParamArray attribute {0} defined for "
            "parameter {1} of method {2}.", isDef ? (String^)"is" : "is not", pInfo[ 0 ]->Name, mInfo->Name );
         }
         else
                  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
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top
Show: