Type.GetMember メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在の 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 オブジェクトの配列。それ以外の場合は空の配列。
実装
例外
name
が null
です。
例
次の例では、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 を参照してください。 |
名前と署名の非表示では、カスタム修飾子、戻り値の型、パラメーターの型、センチネル、アンマネージ呼び出し規則など、署名のすべての部分が考慮されます。 これはバイナリ比較です。
リフレクションの場合、プロパティとイベントは名前と署名で非表示になります。 基本クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしか含めない場合、派生クラスプロパティは基本クラスのプロパティを非表示にし、基本クラスのセッターにアクセスできない。
カスタム属性は、共通型システムの一部ではありません。
現在の が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つ Type MemberInfo を返します。
現在の がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合、このメソッドはクラス制約のメンバーを検索します。クラス制約がない場合は のメンバーを Type Object 検索します。
注意
ジェネリック メソッドの場合は、 に型引数を含め "しない" 必要があります name
。 たとえば、C# コードでは、 型のジェネリック引数を 1 つ持つ という名前のメソッドではなく、"" というテキスト名のメンバー GetMember("MyMethod<int>")
MyMethod<int>
MyMethod
を検索します int
。
こちらもご覧ください
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
適用対象
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
取得するメンバーの名前を含む文字列。
戻り値
指定した名前のパブリック メンバーが存在する場合は、そのメンバーを表す MemberInfo オブジェクトの配列。それ以外の場合は空の配列。
実装
例外
name
が null
です。
例
次の例では、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
。
こちらもご覧ください
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
適用対象
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
検索する値。
戻り値
指定した名前のパブリック メンバーが存在する場合は、そのメンバーを表す MemberInfo オブジェクトの配列。それ以外の場合は空の配列。
実装
例外
name
が null
です。
派生クラスにより実装が提供される必要があります。
例
次の例では、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
。
こちらもご覧ください
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)