MemberInfo.GetCustomAttributes メソッド

派生クラスによってオーバーライドされた場合、このメンバで定義されているすべての属性を返します。

オーバーロードの一覧

派生クラスによってオーバーライドされた場合、すべてのカスタム属性の配列を返します。

.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[];

派生クラスによってオーバーライドされた場合、 Type で識別されるカスタム属性の配列を返します。

.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[];

使用例

[Visual Basic, C#, C++] カスタム属性を作成して MyClass.MyMethod に関連付け、実行時にこの属性を取得してその結果を表示する例を次に示します。

[Visual Basic, C#, C++] メモ   ここでは、GetCustomAttributes のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

MemberInfo クラス | MemberInfo メンバ | System.Reflection 名前空間