Auf Englisch lesen

Freigeben über


Type.GetEvents Methode

Definition

Ruft die vom aktuellen Type deklarierten oder geerbten Ereignisse ab.

Überlädt

GetEvents()

Gibt sämtliche vom aktuellen Type deklarierten oder geerbten öffentlichen Ereignisse zurück.

GetEvents(BindingFlags)

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Bindungseinschränkungen nach vom aktuellen Type definierten oder geerbten Ereignissen.

GetEvents()

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

Gibt sämtliche vom aktuellen Type deklarierten oder geerbten öffentlichen Ereignisse zurück.

public virtual System.Reflection.EventInfo[] GetEvents();

Gibt zurück

Gibt ein Array von EventInfo-Objekten zurück, die sämtliche vom aktuellen Type deklarierten oder geerbten öffentlichen Ereignisse darstellen.

- oder -

Ein leeres Array vom EventInfo-Typ, wenn der aktuelle Type keine öffentlichen Ereignisse besitzt.

Implementiert

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);
        }
    }
}

Hinweise

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

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 variiert. Ab .NET 7 ist die Reihenfolge jedoch deterministisch, basierend auf der Metadatenreihenfolge in der Assembly.

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 reflektieren.

Memberart statischen Nicht statisch
Konstruktor Nein Nein
Feld Nein Ja. Ein Feld wird immer nach Name und Signatur ausgeblendet.
Ereignis Nicht zutreffend Die allgemeine Typsystemregel ist, dass die Vererbung mit der der Methoden identisch ist, die die -Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.
Methode Nein Ja. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Name oder nach Name und Signatur ausblenden sein.
Geschachtelter Typ Nein Nein
Eigenschaft Nicht zutreffend Die allgemeine Typsystemregel ist, dass die Vererbung mit der der Methoden identisch ist, die die -Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.
  1. Hide-by-name-and-signature berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwalteter Aufrufkonventionen. Dies ist ein binärer Vergleich.

  2. Für die Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet. 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 für die Basisklasse zugreifen.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Wenn der aktuelle 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 einen Typparameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, durchsucht diese Methode die Ereignisse der Klasseneinschränkung.

Weitere Informationen

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetEvents(BindingFlags)

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

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Bindungseinschränkungen nach vom aktuellen Type definierten oder geerbten Ereignissen.

public abstract System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr);

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 sämtliche vom aktuellen Type deklarierten oder geerbten Ereignisse darstellen, die den angegebenen Bindungseinschränkungen entsprechen.

- oder -

Ein leeres Array vom EventInfo-Typ, wenn der aktuelle Type keine Ereignisse besitzt oder keines der Ereignisse den Bindungseinschränkungen entspricht.

Implementiert

Beispiele

Im folgenden Beispiel wird ein Array von EventInfo Objekten abgerufen, die den angegebenen Bindungsflags 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);
        }
    }
}

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 variiert. Ab .NET 7 ist die Reihenfolge jedoch deterministisch, basierend auf der Metadatenreihenfolge in der Assembly.

Die folgenden BindingFlags Filterflags 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 , um öffentliche Ereignisse in die Suche einzuschließen.

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

  • Geben Sie anBindingFlags.FlattenHierarchy, um und protected statische Member nach oben in der Hierarchie einzuschließenpublic. private Statische Member in geerbten Klassen sind nicht enthalten.

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

  • BindingFlags.DeclaredOnly , um nur die Ereignisse zu durchsuchen, die Typefür deklariert sind, und nicht ereignisse, die einfach geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

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

Wenn der aktuelle 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 einen Typparameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, durchsucht diese Methode die Ereignisse der Klasseneinschränkung.

Weitere Informationen

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1