Freigeben über


EventInfo-Klasse

Ermittelt die Attribute eines Ereignisses und ermöglicht den Zugriff auf die Metadaten des Ereignisses.

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public MustInherit Class EventInfo
    Inherits MemberInfo
    Implements _EventInfo
'Usage
Dim instance As 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
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public abstract class EventInfo extends MemberInfo implements _EventInfo
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public abstract class EventInfo extends MemberInfo implements _EventInfo

Hinweise

Ereignisse werden zusammen mit Delegaten verwendet. Ein Ereignislistener instanziiert einen Ereignishandlerdelegaten, der immer aufgerufen wird, wenn das Ereignis von einer Ereignisquelle ausgelöst wird. Um eine Verbindung mit der Ereignisquelle herstellen zu können, fügt der Ereignislistener seinen Delegaten der Aufrufliste der Quelle hinzu. Beim Auslösen des Ereignisses wird die Aufrufmethode des Ereignishandlerdelegaten aufgerufen. Es werden sowohl Multicast- als auch Singlecast-Ereignisbenachrichtigungen unterstützt. Die Add und Remove-Methoden müssen, ebenso wie die mit dem jeweiligen Ereignis verknüpfte Klasse des Ereignishandlerdelegaten, in den Metadaten markiert werden.

Delegaten sind objektorientierte Funktionszeiger. In C bzw. C++ stellt ein Funktionszeiger einen Verweis auf eine Methode dar. Anders als die Funktionszeiger in C oder C++ enthalten Delegaten jedoch zwei Verweise: einen Verweis auf eine Methode und einen anderen auf ein Objekt, das die Methode unterstützt. Delegaten können Methoden aufrufen, ohne dass ihnen der die Methode deklarierende bzw vererbende Klassentyp bekannt sein muss. Die Delegaten müssen lediglich den Rückgabetyp und die Parameterliste der Methode kennen.

Das Ereignismodell funktioniert bei Singlecastdelegaten auf ähnliche Weise wie bei Multicastdelegaten. Wenn die Aufrufmethode eines Delegaten aufgerufen wird, ist nur die Methode eines einzelnen Objekts betroffen. Auf eine Delegatendeklaration kann ein Multicastmodifizierer angewendet werden. Dieser ermöglicht den Aufruf mehrerer Methoden als Reaktion auf den Aufruf der Aufrufmethode des Delegaten.

Wenn der inherit-Parameter von GetCustomAttributes den Wert true hat, wird beim Aufruf von ICustomAttributeProvider.GetCustomAttributes für EventInfo die Typhierarchie nicht durchlaufen. Verwenden Sie System.Attribute, um benutzerdefinierte Attribute zu vererben.

Hinweise für Erben Wenn EventInfo vererbt wird, müssen die folgenden Member überschrieben werden: GetAddMethod, GetRemoveMethod und GetRaiseMethod.

Beispiel

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

Vererbungshierarchie

System.Object
   System.Reflection.MemberInfo
    System.Reflection.EventInfo

Threadsicherheit

Dieser Typ ist sicher bei Multithreadoperationen.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

EventInfo-Member
System.Reflection-Namespace