Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したメンバー型の MemberInfo オブジェクトの配列にフィルターを適用して返します。
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ FindMembers(System::Reflection::MemberTypes memberType, System::Reflection::BindingFlags bindingAttr, System::Reflection::MemberFilter ^ filter, System::Object ^ filterCriteria);
public virtual System.Reflection.MemberInfo[] FindMembers (System.Reflection.MemberTypes memberType, System.Reflection.BindingFlags bindingAttr, System.Reflection.MemberFilter? filter, object? filterCriteria);
public virtual System.Reflection.MemberInfo[] FindMembers (System.Reflection.MemberTypes memberType, System.Reflection.BindingFlags bindingAttr, System.Reflection.MemberFilter filter, object filterCriteria);
abstract member FindMembers : System.Reflection.MemberTypes * System.Reflection.BindingFlags * System.Reflection.MemberFilter * obj -> System.Reflection.MemberInfo[]
override this.FindMembers : System.Reflection.MemberTypes * System.Reflection.BindingFlags * System.Reflection.MemberFilter * obj -> System.Reflection.MemberInfo[]
Public Overridable Function FindMembers (memberType As MemberTypes, bindingAttr As BindingFlags, filter As MemberFilter, filterCriteria As Object) As MemberInfo()
パラメーター
- memberType
- MemberTypes
検索するメンバー型を示す、列挙値のビットごとの組み合わせ。
- filter
- MemberFilter
比較を実行して、現在調べているメンバーが true
に一致する場合は filterCriteria
を返し、それ以外の場合は false
を返すデリゲート。
- filterCriteria
- Object
MemberInfo
オブジェクトの配列でメンバーが返されたかどうかを判断する検索条件。
FieldAttributes
、MethodAttributes
、MethodImplAttributes
の各フィールドは、このクラスで提供される FilterAttribute
デリゲートと組み合わせて使用できます。
戻り値
指定したメンバー型の MemberInfo オブジェクトのフィルター適用済みの配列。
または
現在の Type に、フィルター条件に一致する memberType
型のメンバーが存在しない場合は、空の配列。
実装
例外
filter
が null
です。
例
次の例では、指定した検索条件に一致するクラス内のすべてのメンバーを検索し、一致するメンバーを表示します。
using namespace System;
using namespace System::Reflection;
ref class MyFindMembersClass
{
public:
static void Test()
{
Object^ objTest = gcnew Object;
Type^ objType = objTest->GetType();
array<MemberInfo^>^arrayMemberInfo;
try
{
//Find all static or public methods in the Object class that match the specified name.
arrayMemberInfo = objType->FindMembers( MemberTypes::Method, static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static | BindingFlags::Instance), gcnew MemberFilter( DelegateToSearchCriteria ), "ReferenceEquals" );
for ( int index = 0; index < arrayMemberInfo->Length; index++ )
Console::WriteLine( "Result of FindMembers -\t {0}", String::Concat( arrayMemberInfo[ index ], "\n" ) );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception : {0}", e );
}
}
static bool DelegateToSearchCriteria( MemberInfo^ objMemberInfo, Object^ objSearch )
{
// Compare the name of the member function with the filter criteria.
if ( objMemberInfo->Name->Equals( objSearch->ToString() ) )
return true;
else
return false;
}
};
int main()
{
MyFindMembersClass::Test();
}
/* The example produces the following output:
Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
*/
using System;
using System.Reflection;
class MyFindMembersClass
{
public static void Main()
{
Object objTest = new Object();
Type objType = objTest.GetType ();
MemberInfo[] arrayMemberInfo;
try
{
//Find all static or public methods in the Object class that match the specified name.
arrayMemberInfo = objType.FindMembers(MemberTypes.Method,
BindingFlags.Public | BindingFlags.Static| BindingFlags.Instance,
new MemberFilter(DelegateToSearchCriteria),
"ReferenceEquals");
for(int index=0;index < arrayMemberInfo.Length ;index++)
Console.WriteLine ("Result of FindMembers -\t"+ arrayMemberInfo[index].ToString() +"\n");
}
catch (Exception e)
{
Console.WriteLine ("Exception : " + e.ToString() );
}
}
public static bool DelegateToSearchCriteria(MemberInfo objMemberInfo, Object objSearch)
{
// Compare the name of the member function with the filter criteria.
if(objMemberInfo.Name.ToString() == objSearch.ToString())
return true;
else
return false;
}
}
/* The example produces the following output:
Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
*/
open System.Reflection
let delegateToSearchCriteria (objMemberInfo: MemberInfo) (objSearch: obj) =
// Compare the name of the member function with the filter criteria.
string objMemberInfo.Name = string objSearch
let objTest = obj ()
let objType = objTest.GetType ()
try
//Find all static or public methods in the Object class that match the specified name.
let arrayMemberInfo =
objType.FindMembers(MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Static ||| BindingFlags.Instance, MemberFilter delegateToSearchCriteria, "ReferenceEquals")
for info in arrayMemberInfo do
printfn $"Result of FindMembers -\t{info}\n"
with e ->
printfn $"Exception : {e}"
(* The example produces the following output:
Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
*)
Imports System.Reflection
Class MyFindMembersClass
Public Shared Sub Main()
Dim objTest As New Object()
Dim objType As Type = objTest.GetType()
Dim arrayMemberInfo() As MemberInfo
Try
'Find all static or public methods in the Object
'class that match the specified name.
arrayMemberInfo = objType.FindMembers(MemberTypes.Method, _
BindingFlags.Public Or BindingFlags.Static _
Or BindingFlags.Instance, _
New MemberFilter(AddressOf DelegateToSearchCriteria), _
"ReferenceEquals")
Dim index As Integer
For index = 0 To arrayMemberInfo.Length - 1
Console.WriteLine("Result of FindMembers -" + ControlChars.Tab + _
arrayMemberInfo(index).ToString() + ControlChars.Cr)
Next index
Catch e As Exception
Console.WriteLine("Exception : " + e.ToString())
End Try
End Sub
Public Shared Function DelegateToSearchCriteria _
(ByVal objMemberInfo As MemberInfo, _
ByVal objSearch As Object) As Boolean
' Compare the name of the member function with the filter criteria.
If objMemberInfo.Name.ToString() = objSearch.ToString() Then
Return True
Else
Return False
End If
End Function 'DelegateToSearchCriteria
End Class
' The example produces the following output:
'
' Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
注釈
このメソッドは、派生クラスによってオーバーライドできます。
メンバーには、プロパティ、メソッド、フィールド、イベントなどが含まれます。
メソッドがFindMembers
メンバー情報を正常に取得するには、引数に bindingAttr
と の少なくとも 1 つとBindingFlags.InstanceBindingFlags.Static、 と の少なくとも 1 つをBindingFlags.NonPublicBindingFlags.Public含める必要があります。
次 BindingFlags のフィルター フラグを使用して、検索に含めるメンバーを定義できます。
検索にインスタンス メンバーを含めるには、 を指定
BindingFlags.Instance
します。検索に静的メンバーを含めるには、 を指定
BindingFlags.Static
します。検索にパブリック メンバーを含めるには、 を指定
BindingFlags.Public
します。非パブリック メンバー (つまり、プライベート、内部、および保護されたメンバー) を検索に含めるには、 を指定
BindingFlags.NonPublic
します。
検索のしくみを変更するには、次 BindingFlags の修飾子フラグを使用できます。
-
BindingFlags.DeclaredOnly
で宣言された Typeメンバーのみを検索する場合は 。単に継承されたメンバーは検索されません。
詳細については、「System.Reflection.BindingFlags」を参照してください。
このメソッドを使用してクラス初期化子 (静的コンストラクター) を取得するには、Visual Basic で (BindingFlags.StaticOr
BindingFlags.NonPublic を指定BindingFlags.Static | BindingFlags.NonPublicする必要があります。 プロパティを使用してクラス初期化子を TypeInitializer 取得することもできます。
現在 Type の がジェネリック型またはジェネリック メソッドの型パラメーターを表す場合は、 FindMembers クラス制約と型パラメーターのインターフェイス制約によって宣言されたメンバーを処理します。
引数には filter
、 型 MemberFilterのカスタム デリゲートを指定することも、次の定義済みのデリゲートのいずれかを指定することもできます。
Type.FilterAttribute、、または ビットマスクをFieldAttributes値として使用します
filterCriteria
。MethodImplAttributesMethodAttributesType.FilterNameに渡された文字列を使用して、各メンバー名の大文字と小文字を区別した比較を実行します
filterCriteria
。Type.FilterNameIgnoreCaseに渡された文字列を使用して、各メンバー名の大文字と小文字を区別しない比較を実行します
filterCriteria
。
適用対象
こちらもご覧ください
.NET