Type.GetEvents Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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. |
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.
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.
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.InstanceoderBindingFlags.Staticangeben, 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.FlattenHierarchyan, umpublicundprotectedstatische Member in der gesamten Hierarchie einzuschließen;privatestatische Member in geerbten Klassen sind nicht enthalten.
Die folgenden BindingFlags Modifiziererkennzeichnungen können verwendet werden, um die Funktionsweise der Suche zu ändern:
-
BindingFlags.DeclaredOnlyum 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.