AttributeIsDefined Method
 

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

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

public static bool IsDefined(
	ParameterInfo element,
	Type attributeType
)
public:
static bool IsDefined(
	ParameterInfo^ element,
	Type^ attributeType
)
static member IsDefined : 
        element:ParameterInfo *
        attributeType:Type -> bool
Public Shared Function IsDefined (
	element As ParameterInfo,
	attributeType As Type
) As Boolean

Parameters

element
Type:

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

attributeType
Type:

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

Return Value

Type:

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.

The ancestors of element are searched for custom attributes.

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], 
                                                 typeof(ParamArrayAttribute));
                // Display the result.
                Console.WriteLine("The ParamArray attribute {0} defined for " +
                                  "parameter {1} of method {2}.",
                                  isDef ? "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.
 */
Imports System
Imports System.Reflection

Module DemoModule
    Public Class TestClass
        ' Assign a ParamArray attribute to the parameter using the keyword.
        Public Sub Method1(ByVal ParamArray args As String())
        End Sub
    End Class

    Sub Main()
        ' Get the class type to access its metadata.
        Dim clsType As Type = GetType(TestClass)
        ' Get the MethodInfo object for Method1.
        Dim mInfo As MethodInfo = clsType.GetMethod("Method1")
        ' Get the ParameterInfo array for the method parameters.
        Dim pInfo() As ParameterInfo = mInfo.GetParameters()
        If Not pInfo(0) Is Nothing Then
            ' See if the ParamArray attribute is defined.
            Dim isDef As Boolean = Attribute.IsDefined(pInfo(0), _
                                   GetType(ParamArrayAttribute))
            Dim strDef As String
            If isDef = True Then
                strDef = "is"
            Else
                strDef = "is not"
            End If
            ' Display the result.
            Console.WriteLine("The ParamArray attribute {0} defined " & _
                              "for parameter {1} of method {2}.", _
                              strDef, pInfo(0).Name, mInfo.Name)
        Else
            Console.WriteLine("Could not retrieve parameter information " & _
                              "for method {0}.", mInfo.Name)
        End If
    End Sub
End Module

' Output:
' The ParamArray attribute is defined for parameter args of method Method1.
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