次の方法で共有


Type.FilterAttribute フィールド

属性に適用するメンバ フィルタを表します。このフィールドは読み取り専用です。

Public Shared ReadOnly FilterAttribute As MemberFilter
[C#]
public static readonly MemberFilter FilterAttribute;
[C++]
public: static MemberFilter* FilterAttribute;
[JScript]
public static var FilterAttribute : MemberFilter;

解説

このフィールドは、 FindMembers メソッドで使用されるデリゲートへの参照を保持します。このデリゲートによってカプセル化されたメソッドは、 MemberInfo オブジェクト、Object という 2 つのパラメータを受け取ります。このメソッドは、 MemberInfo オブジェクトが Object に指定した基準に一致するかどうかを判断します。Object には、 FieldAttributes クラス、 MethodAttributes クラス、または MethodImplAttributes クラスの任意のフィールドの値を割り当てることができます。

たとえば、Object には、Public など、 FieldAttributes のフィールドの値を割り当てることができます。この場合、 FilterAttribute デリゲートが呼び出されると、呼び出されたデリゲートは、 MemberInfo オブジェクトで表されるメソッドがメタデータでパブリック フィールド属性を使用して修飾されている場合にだけ true を返します。

使用例

[Visual Basic, C#, C++] FilterAttribute デリゲートを取得し、これをパラメータとして FindMembers メソッドに渡して、指定されたメンバとそれらの属性を表示する例を次に示します。

 
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic

Public Class MyFilterAttributeSample

    Public Shared Sub Main()
        Try
            Dim myFilter As MemberFilter = Type.FilterAttribute
            Dim myType As Type = GetType(System.String)
            Dim myMemberInfoArray As MemberInfo() = myType.FindMembers(MemberTypes.Constructor Or MemberTypes.Method, BindingFlags.Public Or BindingFlags.Static Or BindingFlags.Instance, myFilter, MethodAttributes.SpecialName)
            Dim myMemberinfo As MemberInfo
            For Each myMemberinfo In myMemberInfoArray
                Console.Write(ControlChars.newline + myMemberinfo.Name)
                Console.Write(" is a " + myMemberinfo.MemberType.ToString())
            Next myMemberinfo

        Catch e As ArgumentNullException
            Console.Write("ArgumentNullException : " + e.Message.ToString())
        Catch e As SecurityException
            Console.Write("SecurityException : " + e.Message.ToString())
        Catch e As Exception
            Console.Write("Exception :" + e.Message.ToString())
        End Try
    End Sub 'Main
End Class 'MyFilterAttributeSample

[C#] 
using System;
using System.Reflection;
using System.Security;

public class MyFilterAttributeSample
{
    public static void Main()
    {
        try
        {
            MemberFilter myFilter = Type.FilterAttribute;
            Type myType = typeof(System.String);
            MemberInfo[] myMemberInfoArray = myType.FindMembers(MemberTypes.Constructor
                |MemberTypes.Method, BindingFlags.Public | BindingFlags.Static |
                BindingFlags.Instance, myFilter, MethodAttributes.SpecialName);
            foreach (MemberInfo myMemberinfo in myMemberInfoArray) 
            { 
                Console.Write ("\n" + myMemberinfo.Name);
                Console.Write (" is a " + myMemberinfo.MemberType.ToString()); 
            }
        }
        catch(ArgumentNullException e)
        {
            Console.Write("ArgumentNullException : " + e.Message); 
        }   
        catch(SecurityException e)
        {
            Console.Write("SecurityException : " + e.Message); 
        }   
        catch(Exception e)
        {
            Console.Write("Exception :" + e.Message); 
        } 
    }    
}

[C++] 
#using <mscorlib.dll>

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

int main() {
   try {
      MemberFilter*  myFilter = Type::FilterAttribute;
      Type*  myType = __typeof(System::String);
      MemberInfo*  myMemberInfoArray[] = myType->FindMembers(
         static_cast<MemberTypes>(MemberTypes::Constructor |MemberTypes::Method),
         static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static | BindingFlags::Instance),
         myFilter, __box(MethodAttributes::SpecialName));
      IEnumerator* myEnum = myMemberInfoArray->GetEnumerator();
      while (myEnum->MoveNext()) {
         MemberInfo* myMemberinfo = __try_cast<MemberInfo*>(myEnum->Current);

         Console::Write (S"\n {0}", myMemberinfo->Name);
         Console::Write (S" is a {0}", __box(myMemberinfo->MemberType)); 
      }
   } catch (ArgumentNullException* e) {
      Console::Write(S"ArgumentNullException : {0}", e->Message); 
   } catch (SecurityException* e) {
      Console::Write(S"SecurityException : {0}", e->Message); 
   } catch (Exception* e) {
      Console::Write(S"Exception : {0}", e->Message); 
   } 
}    

[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 ファミリ

参照

Type クラス | Type メンバ | System 名前空間 | FindMembers | MemberFilter