MemberInfo.IsDefined Method
When overridden in a derived class, indicates whether one or more instance of attributeType is defined on this member.
[Visual Basic] Public MustOverride Function IsDefined( _ ByVal attributeType As Type, _ ByVal inherit As Boolean _ ) As Boolean Implements ICustomAttributeProvider.IsDefined [C#] public abstract bool IsDefined( Type attributeType, bool inherit ); [C++] public: virtual bool IsDefined( Type* attributeType, bool inherit ) = 0; [JScript] public abstract function IsDefined( attributeType : Type, inherit : Boolean ) : Boolean;
Parameters
- attributeType
- The Type object to which the custom attributes are applied.
- inherit
- Specifies whether to search this member's inheritance chain to find the attributes.
Return Value
true if one or more instance of attributeType is defined on this member; otherwise false.
Implements
ICustomAttributeProvider.IsDefined
Example
[Visual Basic, C#, C++] The following example determines whether the specified attribute is defined on the specified member.
[Visual Basic] Imports System Imports System.Reflection Imports Microsoft.VisualBasic ' 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 MemberInfo_GetCustomAttributes_IsDefined Public Shared Sub Main() 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) Console.WriteLine(ControlChars.Cr + "The attributes of type MyAttribute for the member {0} are: " + ControlChars.Cr, myMembers(i)) Dim j As Integer For j = 0 To myAttributes.Length - 1 ' Display the value associated with the attribute. Console.WriteLine("The value of the attribute is : ""{0}""", CType(myAttributes(j), MyAttribute).Name) Next j End If Next i Catch e As Exception Console.WriteLine("An exception occurred: {0}", e.Message) End Try End Sub 'Main End Class 'MemberInfo_GetCustomAttributes_IsDefined [C#] 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 MemberInfo_GetCustomAttributes_IsDefined { public static void Main() { 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); Console.WriteLine("\nThe attributes of type MyAttribute for the member {0} are: \n", myMembers[i]); for(int j = 0; j < myAttributes.Length; j++) // Display the value associated with the attribute. Console.WriteLine("The value of the attribute is : \"{0}\"", ((MyAttribute)myAttributes[j]).Name); } } } catch(Exception e) { Console.WriteLine("An exception occurred: {0}", e.Message); } } } [C++] #using <mscorlib.dll> using namespace System; using namespace System::Reflection; // Define a custom attribute with one named parameter. [AttributeUsage(AttributeTargets::All)] public __gc class MyAttribute : public Attribute { private: String* myName; public: MyAttribute(String* name) { myName = name; } __property String* get_Name() { return myName; } }; // Define a class that has the custom attribute associated with one of its members. public __gc class MyClass1 { public: [MyAttribute(S"This is an example attribute.")] void MyMethod(int i) { } }; int main() { 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); Console::WriteLine(S"\nThe attributes of type MyAttribute for the member {0} are: \n", myMembers->Item[i]); for (int j = 0; j < myAttributes->Length; j++) // Display the value associated with the attribute. Console::WriteLine(S"The value of the attribute is : \"{0}\"", (__try_cast<MyAttribute*>(myAttributes[j]))->Name); } } } catch (Exception* e) { Console::WriteLine(S"An exception occurred: {0}", e->Message); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
See Also
MemberInfo Class | MemberInfo Members | System.Reflection Namespace