MemberInfo.IsDefined Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member.

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

Syntax

Public MustOverride Function IsDefined ( _
    attributeType As Type, _
    inherit As Boolean _
) As Boolean
public abstract bool IsDefined(
    Type attributeType,
    bool inherit
)

Parameters

  • attributeType
    Type: System..::.Type
    The type of custom attribute to search for. The search includes derived types.
  • inherit
    Type: System..::.Boolean
    true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks.

Return Value

Type: System..::.Boolean
true if one or more instances of attributeType or any of its derived types is applied to this member; otherwise, false.

Implements

ICustomAttributeProvider..::.IsDefined(Type, Boolean)

Remarks

This method ignores the inherit parameter for properties and events. To search the inheritance chain for attributes on properties and events, use the appropriate overloads of the Attribute..::.IsDefined method.

Examples

The following example determines whether the specified attribute is applied to the specified member.

Imports System.Reflection

' Define a custom attribute with one named parameter.
<AttributeUsage(AttributeTargets.All)> Public Class MyAttribute
   Inherits Attribute
   Private myName As String

   Public Sub New(ByVal name As String)
      myName = name
   End Sub 'New

   Public ReadOnly Property Name() As String
      Get
         Return myName
      End Get
   End Property
End Class 'MyAttribute

' Define a class that has the custom attribute associated with one of its members.
Public Class MyClass1

   <MyAttribute("This is an example attribute.")> Public Sub MyMethod(ByVal i As Integer)
      Return
   End Sub 'MyMethod
End Class 'MyClass1

Public Class Example

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      Try
         ' Get the type of MyClass1.
         Dim myType As Type = GetType(MyClass1)
         ' Get the members associated with MyClass1.
         Dim myMembers As MemberInfo() = myType.GetMembers()

         ' Display the attributes for each of the members of MyClass1.
         Dim i As Integer
         For i = 0 To myMembers.Length - 1
            ' Display the attribute if it is of type MyAttribute.
            If myMembers(i).IsDefined(GetType(MyAttribute), False) Then
               Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(GetType(MyAttribute), False)
               outputBlock.Text += String.Format(ControlChars.Cr + "The attributes of type MyAttribute for the member {0} are: " + ControlChars.Cr, myMembers(i)) & vbCrLf
               Dim j As Integer
               For j = 0 To myAttributes.Length - 1
                  ' Display the value associated with the attribute.
                  outputBlock.Text += String.Format("The value of the attribute is : ""{0}""", CType(myAttributes(j), MyAttribute).Name) & vbCrLf
               Next j
            End If
         Next i
      Catch e As Exception
         outputBlock.Text += String.Format("An exception occurred: {0}", e.Message) & vbCrLf
      End Try
   End Sub 'Main
End Class 'MemberInfo_GetCustomAttributes_IsDefined

using System;
using System.Reflection;

// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
   private string myName;
   public MyAttribute(string name)
   {
      myName = name;
   }
   public string Name
   {
      get
      {
         return myName;
      }
   }
}

// Define a class that has the custom attribute associated with one of its members.
public class MyClass1
{
   [MyAttribute("This is an example attribute.")]
   public void MyMethod(int i)
   {
      return;
   }
}

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      try
      {
         // Get the type of MyClass1.
         Type myType = typeof(MyClass1);
         // Get the members associated with MyClass1.
         MemberInfo[] myMembers = myType.GetMembers();

         // Display the attributes for each of the members of MyClass1.
         for (int i = 0; i < myMembers.Length; i++)
         {
            // Display the attribute if it is of type MyAttribute.
            if (myMembers[i].IsDefined(typeof(MyAttribute), false))
            {
               Object[] myAttributes = myMembers[i].GetCustomAttributes(typeof(MyAttribute), false);
               outputBlock.Text += String.Format("\nThe attributes of type MyAttribute for the member {0} are: \n",
                   myMembers[i]) + "\n";
               for (int j = 0; j < myAttributes.Length; j++)
                  // Display the value associated with the attribute.
                  outputBlock.Text += String.Format("The value of the attribute is : \"{0}\"",
                      ((MyAttribute)myAttributes[j]).Name) + "\n";
            }
         }
      }
      catch (Exception e)
      {
         outputBlock.Text += String.Format("An exception occurred: {0}", e.Message) + "\n";
      }
   }
}

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

MemberInfo Class

System.Reflection Namespace