EventInfo クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.None)> _ Public MustInherit Class EventInfo Inherits MemberInfo Implements _EventInfo
[SerializableAttribute] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.None)] public abstract class EventInfo : MemberInfo, _EventInfo
[SerializableAttribute] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType::None)] public ref class EventInfo abstract : public MemberInfo, _EventInfo

イベントはデリゲートを通じて使用されます。イベント リスナは、イベント ソースによってイベントが発生したときに必ず呼び出されるイベント ハンドラ デリゲートをインスタンス化します。イベント ソースに接続するために、イベント リスナはこのデリゲートをイベント ソースの呼び出しリストに追加します。イベントが発生すると、イベント ハンドラ デリゲートの invoke メソッドが呼び出されます。マルチキャスト イベントの通知とシングルキャスト イベントの通知の両方がサポートされています。Add メソッドと Remove メソッドは、イベントに関連付けられているイベント ハンドラ デリゲート クラスと同様、メタデータでマークする必要があります。
デリゲートは、オブジェクト指向の関数ポインタです。C または C++ では、関数ポインタはメソッドへの参照です。C または C++ の関数ポインタとは異なり、デリゲートは、メソッドへの参照、メソッドをサポートするオブジェクトへの参照という 2 つの参照を保持します。デリゲートは、メソッドを宣言または継承するクラス型がわからなくても、メソッドを呼び出すことができます。デリゲートに必要な情報は、メソッドの戻り値の型とパラメータ リストだけです。
このイベント モデルは、シングルキャスト デリゲートでもマルチキャスト デリゲートでも同じように機能します。デリゲートの invoke メソッドが呼び出された場合、メソッドの呼び出し対象となるオブジェクトは 1 つだけです。マルチキャスト修飾子をデリゲート宣言に適用すると、そのデリゲートの invoke メソッドが呼び出されたときに複数のメソッドを呼び出せるようになります。
GetCustomAttributes の inherit パラメータが true のときに、EventInfo の ICustomAttributeProvider.GetCustomAttributes を呼び出すと、型階層が検索されません。カスタム属性を継承するには、System.Attribute を使用します。
継承時の注意 EventInfo から継承する場合、GetAddMethod、GetRemoveMethod、GetRaiseMethod の各メンバをオーバーライドする必要があります。
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 Not (myEventBindingFlags Is 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
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); } } }
#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 ); } }
import System.*; import System.Reflection.*; import System.Security.*; class MyEventExample { public static void main(String[] args) { try { // Creates a bitmask based on BindingFlags. BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; Type myTypeBindingFlags = System.Windows.Forms.Button.class.ToType(); 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.get_Message()); } catch (ArgumentNullException e) { Console.WriteLine("An exception occurred."); Console.WriteLine("Message :" + e.get_Message()); } catch (System.Exception e) { Console.WriteLine("The following exception was raised : {0}" , e.get_Message()); } } //main } //MyEventExample

System.Reflection.MemberInfo
System.Reflection.EventInfo


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- EventInfo クラスのページへのリンク