Type.GetMember メソッド (String)
指定した名前のメンバを検索します。
Overloads Public Function GetMember( _
ByVal name As String _) As MemberInfo()
[C#]
public MemberInfo[] GetMember(stringname);
[C++]
public: MemberInfo* GetMember(String* name) [];
[JScript]
public function GetMember(
name : String) : MemberInfo[];
パラメータ
- name
取得するパブリック メンバの名前を格納している String 。
戻り値
指定した名前のパブリック メンバが存在する場合は、そのメンバを表す MemberInfo オブジェクトの配列。それ以外の場合は null 参照 (Visual Basic では Nothing) 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | name が null 参照 (Visual Basic では Nothing) です。 |
解説
name の検索では大文字と小文字が区別されます。
メンバには、プロパティ、メソッド、フィールド、イベントなどがあります。
このメソッドは、現在のクラスとその基本クラスを検索します。このメソッドを使用した場合、パブリック メソッドだけを検索できます。要求された型がパブリックではなく、呼び出し元に現在のアセンブリ外の非パブリック オブジェクトをリフレクションするための ReflectionPermission がない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。
クラス初期化子は、 GetMember 、 GetMembers 、 FindMembers 、および GetConstructors を通じて使用できます。
型に対するリフレクション時に Get メソッドによって返される基本クラスのメンバを次の表に示します。
メンバ型 | 静的 | 非静的 |
---|---|---|
コンストラクタ | いいえ | いいえ |
フィールド | いいえ | はい。フィールドは常に名前と署名によって隠ぺいされます。 |
イベント | 適用なし | 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。 |
メソッド | いいえ | はい。メソッド (仮想メソッドと非仮想メソッドの両方) は、名前によって隠蔽することもできますし、名前と署名によって隠蔽することもできます。 |
入れ子になった型 | いいえ | いいえ |
プロパティ | 適用なし | 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。 |
- 名前と署名による隠ぺいでは、カスタム修飾子、戻り値の型、パラメータの型、sentinel、およびアンマネージ呼び出し規約を含めて、署名のすべての部分が判断の対象となります。これはバイナリ比較です。
- リフレクションの場合、プロパティおよびイベントは名前と署名によって隠ぺいされています。基本クラスに get アクセサと set アクセサの両方を持つプロパティがあり、派生クラスには get アクセサしかない場合、派生クラスのプロパティにより基本クラスのプロパティが隠ぺいされ、基本クラスの set アクセサにはアクセスできません。
- カスタム属性は、共通の型システムの一部ではありません。
使用例
[Visual Basic, C#, C++] String クラスの、文字 C で始まるメンバをすべて表示する例を次に示します。
Imports System
Imports System.Security
Imports System.Reflection
Imports Microsoft.VisualBasic
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 'Main
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 'GetMemberInfo
[C#]
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.");
}
[C++]
#using <mscorlib.dll>
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(S"ArgumentNullException occurred.");
Console::WriteLine(S"Source: {0}", e->Source);
Console::WriteLine(S"Message: {0}", e->Message);
} catch (NotSupportedException* e) {
Console::WriteLine(S"NotSupportedException occurred.");
Console::WriteLine(S"Source: {0}", e->Source);
Console::WriteLine(S"Message: {0}", e->Message);
} catch (SecurityException* e) {
Console::WriteLine(S"SecurityException occurred.");
Console::WriteLine(S"Source: {0}", e->Source);
Console::WriteLine(S"Message: {0}", e->Message);
} catch (Exception* e) {
Console::WriteLine(S"Exception occurred.");
Console::WriteLine(S"Source: {0}", e->Source);
Console::WriteLine(S"Message: {0}", e->Message);
}
}
void GetMemberInfo() {
String* myString = S"GetMember_String";
Type* myType = myString->GetType();
// Get the members for myString starting with the letter C.
MemberInfo* myMembers[] = myType->GetMember(S"C*");
if (myMembers->Length > 0) {
Console::WriteLine(S"\nThe member(s) starting with the letter C for type {0}:", myType);
for (int index=0; index < myMembers->Length; index++)
Console::WriteLine(S"Member {0}: {1}",__box( index + 1), myMembers->Item[index]);
} else
Console::WriteLine(S"No members match the search criteria.");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
.NET Framework セキュリティ:
- ReflectionPermission (非パブリック オブジェクトをリフレクション操作するために必要なアクセス許可) ReflectionPermissionFlag.TypeInformation (関連する列挙体)
参照
Type クラス | Type メンバ | System 名前空間 | Type.GetMember オーバーロードの一覧 | MemberInfo | String | DefaultBinder | ReflectionPermission | GetMembers | GetDefaultMembers | FindMembers