エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Type.GetEvents メソッド (BindingFlags)

2013/12/12

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

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public abstract EventInfo[] GetEvents(
	BindingFlags bindingAttr
)

パラメーター

bindingAttr
型: System.Reflection.BindingFlags
検索の実行方法を指定する 1 つ以上の BindingFlags から成るビットマスク。
または
null を返す 0。

戻り値

型: System.Reflection.EventInfo []
現在の Type で宣言または継承されているイベントのうち、指定したバインディング制約に一致するすべてのイベントを表す EventInfo オブジェクトの配列。
または
現在の Type にイベントが存在しないか、またはイベントの中にバインディング制約に一致するものがない場合は、EventInfo 型の空の配列。

GetEvents メソッドから返されるイベントは、アルファベット順や宣言順などの特定の順序で返されるわけではありません。したがって、イベントが返される順序に依存するようなコードは避ける必要があります。

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

  • 戻り値を取得するには、BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。

  • 検索対象にパブリック イベントを含めるための BindingFlags.Public を指定します。

  • 検索対象にパブリックではないイベント (つまり、プライベート イベント、内部イベント、およびプロテクト イベント) を含めるための BindingFlags.NonPublic を指定します。基本クラスのプロテクト イベントおよび内部イベントのみが返され、基本クラスのプライベート イベントは返されません。

  • 階層構造の上位にある public 静的メンバーおよび protected 静的メンバーを検索対象に含めるには、BindingFlags.FlattenHierarchy を指定します。継承クラスの private 静的メンバーは含まれません。

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

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

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

パブリックなメソッドまたはアクセサーが少なくとも 1 つはあるイベントは、リフレクションに対してパブリックであると見なされます。それ以外の場合、イベントはプライベートと見なされ、BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual Basic では Or を使用して値を組み合わせる) を使用して取得する必要があります。

現在の Type が構築ジェネリック型を表している場合、このメソッドは、型パラメーターを適切な型の引数で置き換えて EventInfo オブジェクトを返します。

現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合、このメソッドはクラス制約のイベントを検索します。

指定したバインディング フラグに一致する EventInfo オブジェクトの配列を取得し、クラスのイベントをすべて取得して、イベント名を表示する例を次に示します。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;
using System.Collections.Generic;
using System.Collections.ObjectModel;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // The parameterless overload of GetEvents returns all the public
      // events on the Example class, whether those events are instance
      // or static events.
      outputBlock.Text += "All Public Events of Example:\n";
      foreach( EventInfo evi in typeof(Example).GetEvents() )
      {
         outputBlock.Text += evi.ToString() + "\n";
      }

      outputBlock.Text += "\nAll Non-Public Events of Example:\n";
      BindingFlags allNonPublic = 
         BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;

      foreach( EventInfo evi in typeof(Example).GetEvents(allNonPublic) )
      {
         outputBlock.Text += evi.ToString() + "\n";
      }

      outputBlock.Text += "\nAll Instance Events of Example:\n";
      BindingFlags allInstance = 
         BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;

      foreach( EventInfo evi in typeof(Example).GetEvents(allInstance) )
      {
         outputBlock.Text += evi.ToString() + "\n";
      }
   }

   public static event System.Windows.Input.MouseEventHandler MyMouseEvent;
   public event MyEventHandler MyEvent;
   internal event EventHandler MyOtherEvent;

   public delegate void MyEventHandler(object sender, MyEventArgs e);

   public class MyEventArgs : EventArgs
   {
      private List<string> eventData;
      private MyEventArgs(List<string> eventData)
      {
         this.eventData = eventData;
      }

      public ReadOnlyCollection<string> Data
      {
         get { return new ReadOnlyCollection<String>(eventData); }
      }
   }
}

/* This example produces output similar to the following:

All Public Events of Example:
System.Windows.Input.MouseEventHandler MyMouseEvent 
MyEventHandler MyEvent 

All Non-Public Events of Example:
System.EventHandler MyOtherEvent

All Instance Events of Example:
System.Windows.Input.MouseEventHandler MyMouseEvent 
MyEventHandler MyEvent 
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2015 Microsoft