Type.GetEvent Type.GetEvent Type.GetEvent Type.GetEvent Method

定義

現在の Type で宣言または継承されている特定のイベントを取得します。Gets a specific event declared or inherited by the current Type.

オーバーロード

GetEvent(String) GetEvent(String) GetEvent(String) GetEvent(String)

指定したパブリック イベントを表す EventInfo オブジェクトを返します。Returns the EventInfo object representing the specified public event.

GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags)

派生クラス内でオーバーライドされた場合、指定されたバイディング制約を使用して、指定されたイベントを表わす EventInfo オブジェクトを返します。When overridden in a derived class, returns the EventInfo object representing the specified event, using the specified binding constraints.

GetEvent(String) GetEvent(String) GetEvent(String) GetEvent(String)

指定したパブリック イベントを表す EventInfo オブジェクトを返します。Returns the EventInfo object representing the specified public event.

public:
 virtual System::Reflection::EventInfo ^ GetEvent(System::String ^ name);
public System.Reflection.EventInfo GetEvent (string name);
abstract member GetEvent : string -> System.Reflection.EventInfo
override this.GetEvent : string -> System.Reflection.EventInfo
Public Function GetEvent (name As String) As EventInfo

パラメーター

name
String String String String

現在の Type で宣言または継承されているイベントの名前を格納する文字列。The string containing the name of an event that is declared or inherited by the current Type.

戻り値

現在の Type で宣言または継承されている指定パブリック イベントが存在する場合は、そのイベントを表すオブジェクト。それ以外の場合は nullThe object representing the specified public event that is declared or inherited by the current Type, if found; otherwise, null.

実装

例外

次の例では、作成、EventInfoオブジェクトし、指定したイベントの button クラスのイベントを取得します。The following example creates an EventInfo object and gets the event for a button class for the specified event.

#using <system.dll>
#using <system.windows.forms.dll>
#using <system.drawing.dll>

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

int main()
{
   try
   {
      Type^ myType = System::Windows::Forms::Button::typeid;
      EventInfo^ myEvent = myType->GetEvent( "Click" );
      if ( myEvent != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class." );
         Console::WriteLine( myEvent );
      }
      else
            Console::WriteLine( "The Click event is not available in the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

class MyEventExample
{
    public static void Main()
    {  
        try
        {

            Type myType = typeof(System.Windows.Forms.Button);
            EventInfo myEvent = myType.GetEvent("Click");
            if(myEvent != null)
            {
                Console.WriteLine("Looking for the Click event in the Button class.");
                Console.WriteLine(myEvent.ToString());
            }
            else
                Console.WriteLine("The Click event is not available in the Button class.");
        }
        catch(SecurityException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("The following exception was raised : {0}",e.Message);
        }
    }
}
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic

' Compile this sample using the following command line:
' vbc type_getevent.vb /r:"System.Windows.Forms.dll" /r:"System.dll"

Class MyEventExample
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(System.Windows.Forms.Button)
            Dim myEvent As EventInfo = myType.GetEvent("Click")
            If Not (myEvent Is Nothing) Then
                Console.WriteLine(ControlChars.Cr + "Looking for the Click event in the Button class.")
                Console.WriteLine(ControlChars.Cr + myEvent.ToString())
            Else
                Console.WriteLine("The Click event is not available with the Button class.")
            End If
        Catch e As SecurityException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As Exception
            Console.WriteLine("The following exception was raised : {0}", e.Message)
        End Try
    End Sub 'Main
End Class 'MyEventExample

注釈

少なくとも 1 つのメソッドまたはパブリック アクセサーがある場合、このイベントはリフレクションには、パブリックと見なされます。An event is considered public to reflection if it has at least one method or accessor that is public. それ以外の場合、イベントは、プライベートと見なされ、使用する必要がありますBindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic での結合を使用して値Or) を取得します。Otherwise the event is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

検索name小文字が区別されます。The search for name is case-sensitive. 検索には、static および public インスタンスのパブリック イベントが含まれています。The search includes public static and public instance events.

次の表は、基底クラスのメンバーがによって返される、Getメソッドの型でリフレクション時にします。The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

メンバーの型Member Type スタティックStatic 非静的Non-Static
コンストラクターConstructor いいえNo いいえNo
フィールドField いいえNo はい。Yes. フィールドは、常に、名前とシグネチャによる非表示です。A field is always hide-by-name-and-signature.
eventEvent 利用不可Not applicable 共通型システムの規則は、継承は、メソッド、プロパティを実装するのと同じです。The common type system rule is that the inheritance is the same as that of the methods that implement the property. プロパティは、リフレクションは、名前とシグネチャで隠ぺいとして扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ 2 を参照してください。See note 2 below.
メソッドMethod いいえNo はい。Yes. (仮想および非仮想) メソッドには、名前によって隠ぺいまたは名前とシグネチャによる非表示を指定できます。A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
入れ子にされた型Nested Type いいえNo いいえNo
プロパティProperty 利用不可Not applicable 共通型システムの規則は、継承は、メソッド、プロパティを実装するのと同じです。The common type system rule is that the inheritance is the same as that of the methods that implement the property. プロパティは、リフレクションは、名前とシグネチャで隠ぺいとして扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ 2 を参照してください。See note 2 below.
  1. 名前とシグネチャによる非表示にするは、すべてのパーツのカスタム修飾子を含む、シグネチャの戻り値の型、パラメーターの型、sentinel、アンマネージ呼び出し規約と見なします。Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. これは、バイナリ比較です。This is a binary comparison.

  2. リフレクション プロパティおよびイベントは、名前とシグネチャによる非表示にするは。For reflection, properties and events are hide-by-name-and-signature. 派生クラスには get アクセサーのみ、基本クラスに、get と set アクセサーの両方を持つプロパティがある場合は、派生クラスのプロパティには、基底クラスのプロパティが非表示にし、基本クラスの set アクセス操作子にアクセスすることはできません。If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. カスタム属性は、共通型システムの一部ではありません。Custom attributes are not part of the common type system.

場合、現在Typeこのメソッドが戻る構築されたジェネリック型を表す、EventInfo適切な型引数に置き換え、型パラメーター。If the current Type represents a constructed generic type, this method returns the EventInfo with the type parameters replaced by the appropriate type arguments.

場合、現在Type型パラメーターを表すジェネリック型またはジェネリック メソッドの定義では、このメソッドは、クラス制約のイベントを検索します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the events of the class constraint.

こちらもご覧ください

GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags)

派生クラス内でオーバーライドされた場合、指定されたバイディング制約を使用して、指定されたイベントを表わす EventInfo オブジェクトを返します。When overridden in a derived class, returns the EventInfo object representing the specified event, using the specified binding constraints.

public:
 abstract System::Reflection::EventInfo ^ GetEvent(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.EventInfo GetEvent (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetEvent : string * System.Reflection.BindingFlags -> System.Reflection.EventInfo
Public MustOverride Function GetEvent (name As String, bindingAttr As BindingFlags) As EventInfo

パラメーター

name
String String String String

現在の Type で宣言または継承されているイベントの名前を格納する文字列。The string containing the name of an event which is declared or inherited by the current Type.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted.

または-or- null を返す場合は DefaultDefault to return null.

戻り値

現在の Type で宣言または継承されている指定イベントが存在する場合は、そのイベントを表すオブジェクト。それ以外の場合は nullThe object representing the specified event that is declared or inherited by the current Type, if found; otherwise, null.

実装

例外

次のコード例では、GetEvent(String, BindingFlags)パブリックまたはパブリックでないイベントの「クリックして」という名前のない型を検索するメソッドstatic(Shared Visual Basic で)。The following code example uses the GetEvent(String, BindingFlags) method to search a type for a public or non-public event named "Click" that is not static (Shared in Visual Basic).

#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
using namespace System::Windows::Forms;

int main()
{
   try
   {
      // Creates a bitmask based on BindingFlags.
      BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public | BindingFlags::NonPublic);
      Type^ myTypeBindingFlags = System::Windows::Forms::Button::typeid;
      EventInfo^ myEventBindingFlags = myTypeBindingFlags->GetEvent( "Click", myBindingFlags );
      if ( myEventBindingFlags != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class with the specified BindingFlags." );
         Console::WriteLine( myEventBindingFlags );
      }
      else
            Console::WriteLine( "The Click event is not available with the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

class MyEventExample
{
    public static void Main()
    {  
        try
        {

            // Creates a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
            Type myTypeBindingFlags = typeof(System.Windows.Forms.Button);
            EventInfo myEventBindingFlags = myTypeBindingFlags.GetEvent("Click", myBindingFlags);
            if(myEventBindingFlags != null)
            {
                Console.WriteLine("Looking for the Click event in the Button class with the specified BindingFlags.");
                Console.WriteLine(myEventBindingFlags.ToString());
            }
            else
                Console.WriteLine("The Click event is not available with the Button class.");
        }
        catch(SecurityException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("The following exception was raised : {0}",e.Message);
        }
    }
}
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic

' Compile this sample using the following command line:
' vbc type_getevent.vb /r:"System.Windows.Forms.dll" /r:"System.dll"

Class MyEventExample
    Public Shared Sub Main()
        Try
            ' Creates a bitmask comprising  BindingFlags.
            Dim myBindingFlags As BindingFlags = BindingFlags.Instance Or BindingFlags.Public _
                                                 Or BindingFlags.NonPublic
            Dim myTypeBindingFlags As Type = GetType(System.Windows.Forms.Button)
            Dim myEventBindingFlags As EventInfo = myTypeBindingFlags.GetEvent("Click", myBindingFlags)
            If myEventBindingFlags IsNot Nothing Then
                Console.WriteLine("Looking for the Click event in the Button class with the specified BindingFlags.")
                Console.WriteLine(myEventBindingFlags.ToString())
            Else
                Console.WriteLine("The Click event is not available with the Button class.")
            End If
        Catch e As SecurityException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As Exception
            Console.WriteLine("The following exception was raised : {0}", e.Message)
        End Try
    End Sub 'Main
End Class 'MyEventExample

注釈

BindingFlagsフィルター フラグは、検索に含めるイベントを定義するために使用できます。The following BindingFlags filter flags can be used to define which events to include in the search:

  • いずれかを指定する必要がありますBindingFlags.InstanceまたはBindingFlags.Static戻り値を取得するためにします。You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • 指定BindingFlags.Publicパブリック イベントを検索します。Specify BindingFlags.Public to include public events in the search.

  • 指定BindingFlags.NonPublic検索にパブリックでないイベント (たとえば、プライベート、内部、および保護されたイベントなど) を含める。Specify BindingFlags.NonPublic to include non-public events (that is, private, internal, and protected events) in the search.

  • 指定BindingFlags.FlattenHierarchyに含めるpublicprotected階層; の静的メンバーprivate継承クラスの静的メンバーは含まれません。Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

BindingFlags修飾フラグは、検索の動作を変更するために使用できます。The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase 大文字と小文字を無視するnameします。BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly 宣言されたイベントのみを検索、 Type、継承されたイベントされません。BindingFlags.DeclaredOnly to search only the events declared on the Type, not events that were simply inherited.

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

少なくとも 1 つのメソッドまたはパブリック アクセサーがある場合、このイベントはリフレクションには、パブリックと見なされます。An event is considered public to reflection if it has at least one method or accessor that is public. それ以外の場合、イベントは、プライベートと見なされ、使用する必要がありますBindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic での結合を使用して値Or) を取得します。Otherwise the event is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

場合、現在Typeこのメソッドが戻る構築されたジェネリック型を表す、EventInfo適切な型引数に置き換え、型パラメーター。If the current Type represents a constructed generic type, this method returns the EventInfo with the type parameters replaced by the appropriate type arguments.

場合、現在Type型パラメーターを表すジェネリック型またはジェネリック メソッドの定義では、このメソッドは、クラス制約のイベントを検索します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the events of the class constraint.

こちらもご覧ください

適用対象