Type.GetEvents Methode

Definition

Ruft die Ereignisse ab, die von der aktuellen Typedeklariert oder geerbt werden.

Überlädt

Name Beschreibung
GetEvents()

Gibt alle öffentlichen Ereignisse zurück, die von der aktuellen Typedeklariert oder geerbt werden.

GetEvents(BindingFlags)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird mithilfe der angegebenen Bindungseinschränkungen nach Ereignissen gesucht, die von der aktuellen Typeklasse deklariert oder geerbt werden.

GetEvents()

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Gibt alle öffentlichen Ereignisse zurück, die von der aktuellen Typedeklariert oder geerbt werden.

public:
 virtual cli::array <System::Reflection::EventInfo ^> ^ GetEvents();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents)]
public virtual System.Reflection.EventInfo[] GetEvents();
public virtual System.Reflection.EventInfo[] GetEvents();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents)>]
abstract member GetEvents : unit -> System.Reflection.EventInfo[]
override this.GetEvents : unit -> System.Reflection.EventInfo[]
abstract member GetEvents : unit -> System.Reflection.EventInfo[]
override this.GetEvents : unit -> System.Reflection.EventInfo[]
Public Overridable Function GetEvents () As EventInfo()

Gibt zurück

Ein Array von EventInfo Objekten, die alle öffentlichen Ereignisse darstellen, die von der aktuellen Typedeklariert oder geerbt werden.

-oder-

Ein leeres Array vom Typ EventInfo, wenn die aktuelle Type nicht über öffentliche Ereignisse verfügt.

Implementiert

Attribute

Beispiele

Im folgenden Beispiel wird ein Array von EventInfo Objekten abgerufen, alle Ereignisse für eine Button Klasse abgerufen und die Ereignisnamen angezeigt. Verwenden Sie die folgende Befehlszeile, um das Visual Basic Beispiel zu kompilieren:

vbc type_getevents1.vb /r:System.Windows.Forms.dll /r:System.dll

using System;
using System.Reflection;
using System.Security;

class EventsSample
{
    public static void Main()
    {
        try
        {
            // Creates 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);
        }
    }
}
open System
open System.Reflection
open System.Security

try
    // Creates a bitmask based on BindingFlags.
    let myBindingFlags = BindingFlags.Instance ||| BindingFlags.Public
    let myTypeEvent = typeof<System.Windows.Forms.Button>
    let myEventsBindingFlags = myTypeEvent.GetEvents myBindingFlags
    printfn "\nThe events on the Button class with the specified BindingFlags are : "
    for flag in myEventsBindingFlags do
        printfn $"{flag}"
with
| :? SecurityException as e ->
    printfn $"SecurityException: {e.Message}"
| :? ArgumentNullException as e ->
    printfn $"ArgumentNullException: {e.Message}"
| e ->
    printfn $"Exception : {e.Message}"
Imports System.Reflection
Imports System.Security

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

Class EventsSample

    Public Shared Sub Main()
        Try
            ' Creates 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
End Class

Hinweise

Ein Ereignis gilt als öffentlich zu reflektieren, wenn es über mindestens eine Methode oder einen Accessor verfügt, der öffentlich ist. Andernfalls gilt das Ereignis als privat, und Sie müssen BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic die Werte mithilfe von Or) kombinieren, um es abzurufen.

In .NET 6 und früheren Versionen gibt die GetEvents-Methode keine Ereignisse in einer bestimmten Reihenfolge zurück, z. B. alphabetisch oder Deklarationsreihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Ereignisse zurückgegeben werden, da diese Reihenfolge unterschiedlich ist. Ab .NET 7 ist die Sortierung jedoch auf der Grundlage der Metadatenbestellung in der Assembly deterministisch.

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.

Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn sie einen Typ widerspiegeln.

Mitgliedertyp Static Nicht statisch
Konstruktor No No
Feld No Yes. Ein Feld ist immer hide-by-name-and-signature.
Event Nicht anwendbar Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten.
Methode No Yes. Eine Methode (sowohl virtuell als auch nicht-virtuell) kann Hide-by-name oder Hide-by-name-and-signature sein.
Geschachtelter Typ No No
Eigentum Nicht anwendbar Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten.
  1. Hide-by-name-and-signature berücksichtigt alle Elemente der Signatur, einschließlich angepasste Modifikatoren, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen. Dies ist ein binärer Vergleich.

  2. Bei der Reflection sind Eigenschaften und Ereignisse Hide-by-Name-and-Signature. Wenn Sie über eine Eigenschaft mit einem Get- und einem Set-Accessor in der Basisklasse verfügen, die abgeleitete Klasse jedoch nur über einen Get-Accessor verfügt, blendet die abgeleitete Klasseneigenschaft die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter der Basisklasse zugreifen.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Wenn der aktuelle Typ einen konstruierten generischen Type Typ darstellt, gibt diese Methode die EventInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.

Wenn der aktuelle Type Parameter einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Ereignisse der Klasseneinschränkung.

Weitere Informationen

Gilt für:

GetEvents(BindingFlags)

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird mithilfe der angegebenen Bindungseinschränkungen nach Ereignissen gesucht, die von der aktuellen Typeklasse deklariert oder geerbt werden.

public:
 abstract cli::array <System::Reflection::EventInfo ^> ^ GetEvents(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents)]
public abstract System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents)>]
abstract member GetEvents : System.Reflection.BindingFlags -> System.Reflection.EventInfo[]
abstract member GetEvents : System.Reflection.BindingFlags -> System.Reflection.EventInfo[]
Public MustOverride Function GetEvents (bindingAttr As BindingFlags) As EventInfo()

Parameter

bindingAttr
BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.

-oder-

Default um ein leeres Array zurückzugeben.

Gibt zurück

Ein Array von EventInfo Objekten, die alle Ereignisse darstellen, die vom aktuellen Type Objekt deklariert oder geerbt werden, die den angegebenen Bindungseinschränkungen entsprechen.

-oder-

Ein leeres Array vom Typ EventInfo, wenn der Aktuelle Type keine Ereignisse aufweist oder keines der Ereignisse mit den Bindungseinschränkungen übereinstimmt.

Implementiert

Attribute

Beispiele

Im folgenden Beispiel wird ein Array von EventInfo Objekten abgerufen, die den angegebenen Bindungskennzeichnungen entsprechen, alle Ereignisse für eine Button Klasse abgerufen und die Ereignisnamen angezeigt. Verwenden Sie die folgende Befehlszeile, um das Visual Basic Beispiel zu kompilieren:

vbc type_getevents2.vb /r:System.Windows.Forms.dll /r:System.dll

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);
        }
    }
}
open System
open System.Reflection
open System.Security

try
    // Creates a bitmask based on BindingFlags.
    let myBindingFlags = BindingFlags.Instance ||| BindingFlags.Public
    let myTypeEvent = typeof<System.Windows.Forms.Button>
    let myEventsBindingFlags = myTypeEvent.GetEvents myBindingFlags
    printfn "\nThe events on the Button class with the specified BindingFlags are : "
    for flag in myEventsBindingFlags do
        printfn $"{flag}"
with
| :? SecurityException as e ->
    printfn $"SecurityException: {e.Message}"
| :? ArgumentNullException as e ->
    printfn $"ArgumentNullException: {e.Message}"
| e ->
    printfn $"Exception : {e.Message}"
Imports System.Reflection
Imports System.Security
Imports System.Windows.Forms

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
End Class

Hinweise

In .NET 6 und früheren Versionen gibt die GetEvents-Methode keine Ereignisse in einer bestimmten Reihenfolge zurück, z. B. alphabetisch oder Deklarationsreihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Ereignisse zurückgegeben werden, da diese Reihenfolge unterschiedlich ist. Ab .NET 7 ist die Sortierung jedoch auf der Grundlage der Metadatenbestellung in der Assembly deterministisch.

Die folgenden BindingFlags Filterkennzeichnungen können verwendet werden, um zu definieren, welche Ereignisse in die Suche einbezogen werden sollen:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.

  • Geben Sie an BindingFlags.Public , dass öffentliche Ereignisse in die Suche einbezogen werden sollen.

  • Geben Sie an BindingFlags.NonPublic , dass nicht öffentliche Ereignisse (d. h. private, interne und geschützte Ereignisse) in die Suche einbezogen werden sollen. Es werden nur geschützte und interne Ereignisse für Basisklassen zurückgegeben; Private Ereignisse für Basisklassen werden nicht zurückgegeben.

  • Geben Sie BindingFlags.FlattenHierarchy an, um public und protected statische Member in der gesamten Hierarchie einzuschließen; private statische Member in geerbten Klassen sind nicht enthalten.

Die folgenden BindingFlags Modifiziererkennzeichnungen können verwendet werden, um die Funktionsweise der Suche zu ändern:

  • BindingFlags.DeclaredOnly um nur die ereignisse zu durchsuchen, die für die TypeEreignisse deklariert wurden, nicht ereignisse, die einfach geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Ein Ereignis gilt als öffentlich zu reflektieren, wenn es über mindestens eine Methode oder einen Accessor verfügt, der öffentlich ist. Andernfalls gilt das Ereignis als privat, und Sie müssen BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic die Werte mithilfe von Or) kombinieren, um es abzurufen.

Wenn der aktuelle Typ einen konstruierten generischen Type Typ darstellt, gibt diese Methode die EventInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.

Wenn der aktuelle Type Parameter einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Ereignisse der Klasseneinschränkung.

Weitere Informationen

Gilt für: