Type.GetMember メソッド

定義

現在の Type のメンバーのうち、指定したメンバーを取得します。

オーバーロード

GetMember(String)

指定した名前のパブリック メンバーを検索します。

GetMember(String, BindingFlags)

指定したバインディング制約を使用して、指定したメンバーを検索します。

GetMember(String, MemberTypes, BindingFlags)

指定されたバインディング制約を使用して、指定されたメンバー型の指定されたメンバーを検索します。

GetMember(String)

指定した名前のパブリック メンバーを検索します。

public:
 cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public System.Reflection.MemberInfo[] GetMember (string name);
member this.GetMember : string -> System.Reflection.MemberInfo[]
abstract member GetMember : string -> System.Reflection.MemberInfo[]
override this.GetMember : string -> System.Reflection.MemberInfo[]
Public Function GetMember (name As String) As MemberInfo()

パラメーター

name
String

取得するパブリック メンバーの名前を格納している文字列。

戻り値

MemberInfo[]

指定した名前のパブリック メンバーが存在する場合は、そのメンバーを表す MemberInfo オブジェクトの配列。それ以外の場合は空の配列。

実装

例外

namenullです。

次の例では、C 文字で始まる String クラスのすべてのメンバーを表示します。

using namespace System;
using namespace System::Security;
using namespace System::Reflection;

// forward declarations:
void GetMemberInfo();
void GetPublicStaticMemberInfo();
void GetPublicInstanceMethodMemberInfo();
int main()
{
   try
   {
      GetMemberInfo();
      GetPublicStaticMemberInfo();
      GetPublicInstanceMethodMemberInfo();
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( NotSupportedException^ e ) 
   {
      Console::WriteLine( "NotSupportedException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }

}

void GetMemberInfo()
{
   String^ myString = "GetMember_String";
   Type^ myType = myString->GetType();
   
   // Get the members for myString starting with the letter C.
   array<MemberInfo^>^myMembers = myType->GetMember( "C*" );
   if ( myMembers->Length > 0 )
   {
      Console::WriteLine( "\nThe member(s) starting with the letter C for type {0}:", myType );
      for ( int index = 0; index < myMembers->Length; index++ )
         Console::WriteLine( "Member {0}: {1}", index + 1, myMembers[ index ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}

using System;
using System.Security;
using System.Reflection;

public class MyMemberSample
{
    public static void Main()
    {
        MyMemberSample myClass = new MyMemberSample();
        try
        {
            myClass.GetMemberInfo();
            myClass.GetPublicStaticMemberInfo();	
            myClass.GetPublicInstanceMethodMemberInfo();	
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
        catch(NotSupportedException e)
        {
            Console.WriteLine("NotSupportedException occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
    }

    public void GetMemberInfo()
    {
        String myString = "GetMember_String";

        Type myType = myString.GetType();
        // Get the members for myString starting with the letter C.
        MemberInfo[] myMembers = myType.GetMember("C*");
        if(myMembers.Length > 0)
        {
            Console.WriteLine("\nThe member(s) starting with the letter C for type {0}:", myType);
            for(int index=0; index < myMembers.Length; index++)
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
        }
        else
        {
            Console.WriteLine("No members match the search criteria.");
        }
    }

Imports System.Security
Imports System.Reflection

Public Class MyMemberSample

    Public Shared Sub Main()
        Dim [myClass] As New MyMemberSample()
        Try
            [myClass].GetMemberInfo()
            [myClass].GetPublicStaticMemberInfo()
            [myClass].GetPublicInstanceMethodMemberInfo()
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        Catch e As NotSupportedException
            Console.WriteLine("NotSupportedException occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        Catch e As SecurityException
            Console.WriteLine("SecurityException occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        Catch e As Exception
            Console.WriteLine("Exception occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        End Try
    End Sub


    Public Sub GetMemberInfo()
        Dim myString As [String] = "GetMember_String"
        Dim myType As Type = myString.GetType()
        ' Get the members for myString starting with the letter C.
        Dim myMembers As MemberInfo() = myType.GetMember("C*")
        If myMembers.Length > 0 Then
            Console.WriteLine(ControlChars.Cr + "The member(s) starting with the letter C for type {0}:", myType)
            Dim index As Integer
            For index = 0 To myMembers.Length - 1
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
            Next index
        Else
            Console.WriteLine("No members match the search criteria.")
        End If
    End Sub

注釈

の検索では name 、大文字と小文字が区別されます。 検索には、パブリック静的インスタンス メンバーとパブリック インスタンス メンバーが含まれます。

メンバーには、プロパティ、メソッド、フィールド、イベントなどがあります。

メソッド GetMember は、アルファベット順や宣言順など、特定の順序でメンバーを返すのではありません。 コードは、メンバーが返される順序に依存する必要はありません。これは、その順序が異なっているからです。

このメソッド オーバーロードは、クラス初期化子 (静的コンストラクター) を見つけ出しません。 クラス初期化子を見つけるには、 を受け取るオーバーロードを使用し、| BindingFlags BindingFlags.Static BindingFlags.NonPublic を指定 BindingFlags.Static Or BindingFlags.NonPublic Visual Basic。 プロパティを使用してクラス初期化子を取得 TypeInitializer できます。

次の表は、メソッドが型に反映するときに返される基本クラスの Get メンバーを示しています。

メンバーの型 静的 非静的
コンストラクター いいえ いいえ
フィールド いいえ はい。 フィールドは常に名前と署名で非表示にされます。
Event 適用なし 一般的な型システム規則は、継承が プロパティを実装するメソッドの継承と同じである点です。 リフレクションは、名前と署名でプロパティを非表示として扱います。 下記の注 2 を参照してください。
メソッド いいえ はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にするか、名前と署名で非表示にできます。
入れ子になった型 いいえ いいえ
プロパティ 適用なし 一般的な型システム規則は、継承が プロパティを実装するメソッドの継承と同じである点です。 リフレクションは、名前と署名でプロパティを非表示として扱います。 下記の注 2 を参照してください。
  1. 名前と署名の非表示では、カスタム修飾子、戻り値の型、パラメーターの型、センチネル、アンマネージ呼び出し規則など、署名のすべての部分が考慮されます。 これはバイナリ比較です。

  2. リフレクションの場合、プロパティとイベントは名前と署名で非表示になります。 基本クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしか含めない場合、派生クラスプロパティは基本クラスのプロパティを非表示にし、基本クラスのセッターにアクセスできない。

  3. カスタム属性は、共通型システムの一部ではありません。

現在の が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つ Type MemberInfo を返します。

現在の がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合、このメソッドはクラス制約のメンバーを検索します。クラス制約がない場合は のメンバーを Type Object 検索します。

注意

ジェネリック メソッドの場合は、 に型引数を含め "しない" 必要があります name 。 たとえば、C# コードでは、 型のジェネリック引数を 1 つ持つ という名前のメソッドではなく、"" というテキスト名のメンバー GetMember("MyMethod<int>") MyMethod<int> MyMethod を検索します int

こちらもご覧ください

適用対象

GetMember(String, BindingFlags)

指定したバインディング制約を使用して、指定したメンバーを検索します。

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, bindingAttr As BindingFlags) As MemberInfo()

パラメーター

name
String

取得するメンバーの名前を含む文字列。

bindingAttr
BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。

または 空の配列を返す場合は Default

戻り値

MemberInfo[]

指定した名前のパブリック メンバーが存在する場合は、そのメンバーを表す MemberInfo オブジェクトの配列。それ以外の場合は空の配列。

実装

例外

namenullです。

次の例では、C 文字で始まる クラスのすべての myString パブリック静的メンバーを表示します。

void GetPublicStaticMemberInfo()
{
   String^ myString = "GetMember_String_BindingFlag";
   Type^ myType = myString->GetType();
   
   // Get the public static members for the class myString starting with the letter C
   array<MemberInfo^>^myMembers = myType->GetMember( "C*", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static) );
   if ( myMembers->Length > 0 )
   {
      Console::WriteLine( "\nThe public static member(s) starting with the letter C for type {0}:", myType );
      for ( int index = 0; index < myMembers->Length; index++ )
         Console::WriteLine( "Member {0}: {1}", index + 1, myMembers[ index ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}
public void GetPublicStaticMemberInfo()
{
    String myString = "GetMember_String_BindingFlag";
    Type myType = myString.GetType();
    // Get the public static members for the class myString starting with the letter C.
    MemberInfo[] myMembers = myType.GetMember("C*",
        BindingFlags.Public |BindingFlags.Static);
    if(myMembers.Length > 0)
    {
        Console.WriteLine("\nThe public static member(s) starting with the letter C for type {0}:", myType);
        for(int index=0; index < myMembers.Length; index++)
            Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
    }
    else
    {
        Console.WriteLine("No members match the search criteria.");
    }
}
Public Sub GetPublicStaticMemberInfo()
    Dim myString As [String] = "GetMember_String_BindingFlag"

    Dim myType As Type = myString.GetType()
    ' Get the public static members for the class myString starting with the letter C.
    Dim myMembers As MemberInfo() = myType.GetMember("C*", BindingFlags.Public Or BindingFlags.Static)

    If myMembers.Length > 0 Then
        Console.WriteLine(ControlChars.Cr + "The public static member(s) starting with the letter C for type {0}:", myType)
        Dim index As Integer
        For index = 0 To myMembers.Length - 1
            Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
        Next index
    Else
        Console.WriteLine("No members match the search criteria.")
    End If
End Sub

注釈

このメソッドは、派生クラスによってオーバーライドできます。

メンバーには、プロパティ、メソッド、フィールド、イベントなどがあります。

メソッド GetMember は、アルファベット順や宣言順など、特定の順序でメンバーを返すのではありません。 コードは、メンバーが返される順序に依存する必要はありません。これは、その順序が異なっているからです。

検索に BindingFlags 含めるメンバーを定義するには、次のフィルター フラグを使用できます。

  • 戻り値を取得 BindingFlags.Instance するには、 BindingFlags.Static または を指定する必要があります。

  • 検索 BindingFlags.Public にパブリック メンバーを含めるには、 を指定します。

  • 非パブリック メンバー (つまり、プライベート、内部、および保護されたメンバー) を検索に含 BindingFlags.NonPublic める場合に指定します。

  • 階層 BindingFlags.FlattenHierarchy のメンバーと静的メンバーを含める場合は を指定します。継承されたクラスの静的 public protected private メンバーは含まれません。

検索のしくみ BindingFlags を変更するには、次の修飾子フラグを使用できます。

  • BindingFlags.IgnoreCase の大文字と小文字を無視する場合 name は 。

  • BindingFlags.DeclaredOnly 単純に継承されたメンバーではなく、 で宣言されたメンバー Type のみを検索する場合は 。

詳細については、「System.Reflection.BindingFlags」を参照してください。

このメソッド オーバーロードを使用してクラス初期化子 (静的コンストラクター) を取得するには、 に "静的コンストラクター" を指定し、 に | ( Visual Basic) を指定 name BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or BindingFlags.NonPublic する必要があります bindingAttr 。 プロパティを使用してクラス初期化子を取得 TypeInitializer できます。

現在の が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つ Type MemberInfo を返します。

現在の がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合、このメソッドはクラス制約のメンバーを検索します。クラス制約がない場合は のメンバーを Type Object 検索します。

注意

ジェネリック メソッドの場合は、 に型引数を含め "しない" 必要があります name 。 たとえば、C# コードでは、 型のジェネリック引数を 1 つ持つ という名前のメソッドではなく、"" というテキスト名のメンバー GetMember("MyMethod<int>") MyMethod<int> MyMethod を検索します int

こちらもご覧ください

適用対象

GetMember(String, MemberTypes, BindingFlags)

指定されたバインディング制約を使用して、指定されたメンバー型の指定されたメンバーを検索します。

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::MemberTypes type, System::Reflection::BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, type As MemberTypes, bindingAttr As BindingFlags) As MemberInfo()

パラメーター

name
String

取得するメンバーの名前を含む文字列。

type
MemberTypes

検索する値。

bindingAttr
BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。

または 空の配列を返す場合は Default

戻り値

MemberInfo[]

指定した名前のパブリック メンバーが存在する場合は、そのメンバーを表す MemberInfo オブジェクトの配列。それ以外の場合は空の配列。

実装

例外

namenullです。

派生クラスにより実装が提供される必要があります。

次の例では、C 文字で始まる クラス myString のすべてのメソッドを表示します。

void GetPublicInstanceMethodMemberInfo()
{
   String^ myString = "GetMember_String_MemberType_BindingFlag";
   Type^ myType = myString->GetType();
   
   // Get the public instance methods for myString starting with the letter C.
   array<MemberInfo^>^myMembers = myType->GetMember( "C*", MemberTypes::Method, static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
   if ( myMembers->Length > 0 )
   {
      Console::WriteLine( "\nThe public instance method(s) starting with the letter C for type {0}:", myType );
      for ( int index = 0; index < myMembers->Length; index++ )
         Console::WriteLine( "Member {0}: {1}", index + 1, myMembers[ index ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}
    public void GetPublicInstanceMethodMemberInfo()
    {
        String myString = "GetMember_String_MemberType_BindingFlag";
        Type myType = myString.GetType();
        // Get the public instance methods for myString starting with the letter C.
        MemberInfo[] myMembers = myType.GetMember("C*", MemberTypes.Method,
            BindingFlags.Public | BindingFlags.Instance);
        if(myMembers.Length > 0)
        {
            Console.WriteLine("\nThe public instance method(s) starting with the letter C for type {0}:", myType);
            for(int index=0; index < myMembers.Length; index++)
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
        }
        else
        {
            Console.WriteLine("No members match the search criteria.");
        }
    }
}
    Public Sub GetPublicInstanceMethodMemberInfo()
        Dim myString As [String] = "GetMember_String_MemberType_BindingFlag"

        Dim myType As Type = myString.GetType()
        ' Get the public instance methods for myString starting with the letter C.
        Dim myMembers As MemberInfo() = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public Or BindingFlags.Instance)
        If myMembers.Length > 0 Then
            Console.WriteLine(ControlChars.Cr + "The public instance method(s) starting with the letter C for type {0}:", myType)
            Dim index As Integer
            For index = 0 To myMembers.Length - 1
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
            Next index
        Else
            Console.WriteLine("No members match the search criteria.")
        End If
    End Sub
End Class

注釈

メンバーには、プロパティ、メソッド、フィールド、イベントなどがあります。

メソッド GetMember は、アルファベット順や宣言順など、特定の順序でメンバーを返すのではありません。 コードは、メンバーが返される順序に依存する必要はありません。これは、その順序が異なっているからです。

検索に BindingFlags 含めるメンバーを定義するには、次のフィルター フラグを使用できます。

  • 戻り値を取得 BindingFlags.Instance するには、 BindingFlags.Static または を指定する必要があります。

  • 検索 BindingFlags.Public にパブリック メンバーを含めるには、 を指定します。

  • 非パブリック メンバー (つまり、プライベート、内部、および保護されたメンバー) を検索に含 BindingFlags.NonPublic める場合に指定します。

  • 階層 BindingFlags.FlattenHierarchy のメンバーと静的メンバーを含める場合は を指定します。継承されたクラスの静的 public protected private メンバーは含まれません。

検索のしくみ BindingFlags を変更するには、次の修飾子フラグを使用できます。

  • BindingFlags.IgnoreCase の大文字と小文字を無視する場合 name は 。

  • BindingFlags.DeclaredOnly 単純に継承されたメンバーではなく、 で宣言されたメンバー Type のみを検索する場合は 。

詳細については、「System.Reflection.BindingFlags」を参照してください。

このメソッド オーバーロードを使用してクラス初期化子 (静的コンストラクター) を取得するには、 に "静的コンストラクター" を指定し、 に | ( Visual Basic) を指定 name MemberTypes.Constructor type BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or BindingFlags.NonPublic する必要があります bindingAttr 。 プロパティを使用してクラス初期化子を取得 TypeInitializer できます。

現在の が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つ Type MemberInfo を返します。

現在の がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合、このメソッドはクラス制約のメンバーを検索します。クラス制約がない場合は のメンバーを Type Object 検索します。

注意

ジェネリック メソッドの場合は、 に型引数を含め "しない" 必要があります name 。 たとえば、C# コードでは、 型のジェネリック引数を 1 つ持つ という名前のメソッドではなく、"" というテキスト名のメンバー GetMember("MyMethod<int>") MyMethod<int> MyMethod を検索します int

こちらもご覧ください

適用対象