Type.GetEvents メソッド (BindingFlags)

派生クラスによってオーバーライドされた場合、指定したバインディング制約を使用して、現在の Type で宣言または継承されているイベントを検索します。

Overloads Public MustOverride Function GetEvents( _
   ByVal bindingAttr As BindingFlags _) As EventInfo()
[C#]
public abstract EventInfo[] GetEvents(BindingFlagsbindingAttr);
[C++]
public: virtual EventInfo* GetEvents(BindingFlagsbindingAttr) [] = 0;
[JScript]
public abstract function GetEvents(
   bindingAttr : BindingFlags) : EventInfo[];

パラメータ

  • bindingAttr
    検索の実行方法を指定する 1 つ以上の BindingFlags から成るビット マスク。

    または

    null 参照 (Visual Basic では Nothing) を返す 0。

戻り値

現在の Type で宣言または継承されているイベントのうち、指定したバインディング制約に一致するすべてのイベントを表す EventInfo オブジェクトの配列。

または現在の Type にイベントが存在しないか、またはイベントの中にバインディング制約に一致するものがない場合は、 EventInfo 型の空の配列。

解説

次の BindingFlags フィルタ フラグは、検索対象に含めるイベントを定義するために使用できます。

  • 戻り値を取得するには、 BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。
  • 検索対象にパブリック イベントを含めるための BindingFlags.Public を指定します。
  • 検索対象にパブリックではないイベント (つまり、プライベート イベントやプロテクト イベント) を含めるための BindingFlags.NonPublic を指定します。
  • 階層構造の上位にある静的メンバを含めるための BindingFlags.FlattenHierarchy を指定します。

次の BindingFlags 修飾フラグは、検索方法を変更するために使用できます。

  • Type で宣言されたイベントだけを検索するための BindingFlags.DeclaredOnly 。単に継承されただけのイベントは検索されません。

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

要求された型がパブリックではなく、呼び出し元に現在のアセンブリ外の非パブリック オブジェクトをリフレクションするための ReflectionPermission がない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。

使用例

[Visual Basic, C#, C++] 指定したバインディング フラグに一致する EventInfo オブジェクトの配列を取得し、 Button クラスのイベントをすべて取得して、イベント名を表示する例を次に示します。Visual Basic の例をコンパイルするには、次のコマンド ラインを使用します。

[Visual Basic, C#, C++] vbc type_getevents2.vb /r:System.Windows.Forms.dll /r:System.dll

 
Imports System
Imports System.Reflection
Imports System.Security
Imports System.Windows.Forms
Imports Microsoft.VisualBasic

Class EventsSample

    Public Shared Sub Main()
        Try
            ' Create a bitmask based on BindingFlags.
            Dim myBindingFlags As BindingFlags = BindingFlags.Instance Or BindingFlags.Public
            Dim myTypeEvent As Type = GetType(System.Windows.Forms.Button)
            Dim myEventsBindingFlags As EventInfo() = myTypeEvent.GetEvents(myBindingFlags)
            Console.WriteLine(ControlChars.Cr + "The events on the Button class with the specified BindingFlags are:")
            Dim index As Integer
            For index = 0 To myEventsBindingFlags.Length - 1
                Console.WriteLine(myEventsBindingFlags(index).ToString())
            Next index
        Catch e As SecurityException
            Console.WriteLine("SecurityException:" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub 'Main
End Class 'EventsSample

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

class EventsSample
{
    public static void Main()
    { 
        try
        {
            // Create a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public;  
            Type myTypeEvent = typeof(System.Windows.Forms.Button);
            EventInfo[] myEventsBindingFlags = myTypeEvent.GetEvents(myBindingFlags);
            Console.WriteLine("\nThe events on the Button class with the specified BindingFlags are:");
            for (int index = 0; index < myEventsBindingFlags.Length; index++)
            {
                Console.WriteLine(myEventsBindingFlags[index].ToString());
            }
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException:" + e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}

[C++] 
#using <mscorlib.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>

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

int main()
{ 
   try {
      // Create a bitmask based on BindingFlags.
      BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public);  
      Type* myTypeEvent = __typeof(System::Windows::Forms::Button);
      EventInfo* myEventsBindingFlags[] = myTypeEvent->GetEvents(myBindingFlags);
      Console::WriteLine(S"\nThe events on the Button class with the specified BindingFlags are:");
      for (int index = 0; index < myEventsBindingFlags->Length; index++) {
         Console::WriteLine(myEventsBindingFlags[index]);
      }
   } catch (SecurityException* e) {
      Console::WriteLine(S"SecurityException: {0}", e->Message);
   } catch (ArgumentNullException* e) {
      Console::WriteLine(S"ArgumentNullException: {0}", e->Message);
   } catch (Exception* e) {
      Console::WriteLine(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 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

.NET Framework セキュリティ:

参照

Type クラス | Type メンバ | System 名前空間 | Type.GetEvents オーバーロードの一覧 | EventInfo | BindingFlags | DefaultBinder | ReflectionPermission | GetEvent