MemberInfo.GetCustomAttributes Method
When overridden in a derived class, returns all attributes defined on this member.
Overload List
When overridden in a derived class, returns an array of all of the custom attributes.
Supported by the .NET Compact Framework.
[Visual Basic] Overloads Public MustOverride Function GetCustomAttributes(Boolean) As Object() Implements ICustomAttributeProvider.GetCustomAttributes
[C#] public abstract object[] GetCustomAttributes(bool);
[C++] public: virtual Object* GetCustomAttributes(bool) __gc[] = 0;
[JScript] public abstract function GetCustomAttributes(Boolean) : Object[];
When overridden in a derived class, returns an array of custom attributes identified by Type.
Supported by the .NET Compact Framework.
[Visual Basic] Overloads Public MustOverride Function GetCustomAttributes(Type, Boolean) As Object() Implements ICustomAttributeProvider.GetCustomAttributes
[C#] public abstract object[] GetCustomAttributes(Type, bool);
[C++] public: virtual Object* GetCustomAttributes(Type*, bool) __gc[] = 0;
[JScript] public abstract function GetCustomAttributes(Type, Boolean) : Object[];
Example
[Visual Basic, C#, C++] The following example defines a custom attribute and associates the attribute with MyClass.MyMethod, retrieves the attribute at run time, and displays the result.
[Visual Basic, C#, C++] Note This example shows how to use one of the overloaded versions of GetCustomAttributes. For other examples that might be available, see the individual overload topics.
[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 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 Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(False) If myAttributes.Length > 0 Then Console.WriteLine("The attributes for the member {0} are: ", myMembers(i)) Dim j As Integer For j = 0 To myAttributes.Length - 1 Console.WriteLine("The type of the attribute is: {0}", myAttributes(j)) 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 [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 { 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++) { Object[] myAttributes = myMembers[i].GetCustomAttributes(true); if(myAttributes.Length > 0) { Console.WriteLine("\nThe attributes for the member {0} are: \n", myMembers[i]); for(int j = 0; j < myAttributes.Length; j++) Console.WriteLine("The type of the attribute is {0}.", myAttributes[j]); } } } 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) { return; } }; 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++) { Object* myAttributes[] = myMembers[i]->GetCustomAttributes(true); if (myAttributes->Length > 0) { Console::WriteLine(S"\nThe attributes for the member {0} are: \n", myMembers->Item[i]); for (int j = 0; j < myAttributes->Length; j++) Console::WriteLine(S"The type of the attribute is {0}.", myAttributes->Item[j]); } } } 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.
See Also
MemberInfo Class | MemberInfo Members | System.Reflection Namespace