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 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()
Gibt sämtliche vom aktuellen Type deklarierten oder geerbten öffentlichen Ereignisse zurück.
public:
virtual cli::array <System::Reflection::EventInfo ^> ^ GetEvents();
public virtual System.Reflection.EventInfo[] GetEvents ();
abstract member GetEvents : unit -> System.Reflection.EventInfo[]
override this.GetEvents : unit -> System.Reflection.EventInfo[]
Public Overridable Function GetEvents () As EventInfo()
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
Das folgende Beispiel ruft ein Array von EventInfo -Objekten ab, ruft alle Ereignisse für eine Klasse ab Button
und zeigt die Ereignisnamen an. 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.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
int main()
{
try
{
Type^ myType = System::Windows::Forms::Button::typeid;
array<EventInfo^>^myEvents = myType->GetEvents();
Console::WriteLine( "The events on the Button class are: " );
for ( int index = 0; index < myEvents->Length; index++ )
{
Console::WriteLine( myEvents[ index ] );
}
}
catch ( SecurityException^ e )
{
Console::WriteLine( "SecurityException: {0}", e->Message );
}
catch ( ArgumentNullException^ e )
{
Console::WriteLine( "ArgumentNullException: {0}", e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception: {0}", e->Message );
}
}
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);
}
}
}
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 wird für reflektionsweise als öffentlich betrachtet, wenn es über mindestens eine methode oder einen öffentlichen Accessor verfügt. Andernfalls wird das Ereignis als privat betrachtet, und Sie müssen | | verwenden (in Visual Basic die Werte mithilfe von kombinieren), um es BindingFlags.NonPublic BindingFlags.Instance zu BindingFlags.Static Or
erhalten.
Die -Methode gibt keine Ereignisse in einer bestimmten Reihenfolge zurück, z. B. GetEvents alphabetisch oder Deklarationsreihen reihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Ereignisse zurückgegeben werden, da diese Reihenfolge variiert.
Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.
Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Methoden zurückgegeben Get
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. 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 Namen oder nach Name und Signatur ausgeblendet werden. |
Geschachtelter Typ | Nein | Nein |
Eigenschaft | Nicht zutreffend | Die allgemeine Typsystemregel ist, dass die Vererbung mit der der Methoden identisch ist, die die -Eigenschaft implementieren. Reflektion behandelt Eigenschaften als hide-by-name-and-signature. Siehe Hinweis 2 weiter unten. |
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.
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 Eigenschaft der abgeleiteten Klasse die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.
Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.
Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die EventInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt wurden.
Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Ereignisse der Klasseneinschränkung.
Siehe auch
Gilt für:
GetEvents(BindingFlags)
Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Bindungseinschränkungen nach vom aktuellen Type definierten oder geerbten Ereignissen.
public:
abstract cli::array <System::Reflection::EventInfo ^> ^ GetEvents(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.EventInfo[] GetEvents (System.Reflection.BindingFlags bindingAttr);
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 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
Das folgende Beispiel ruft ein Array von EventInfo -Objekten ab, die mit den angegebenen Bindungsflags übereinstimmen, ruft alle Ereignisse für eine Klasse ab Button
und zeigt die Ereignisnamen an. 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.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
int main()
{
try
{
// Create a bitmask based on BindingFlags.
BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public);
Type^ myTypeEvent = System::Windows::Forms::Button::typeid;
array<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 ] );
}
}
catch ( SecurityException^ e )
{
Console::WriteLine( "SecurityException: {0}", e->Message );
}
catch ( ArgumentNullException^ e )
{
Console::WriteLine( "ArgumentNullException: {0}", e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception: {0}", e->Message );
}
}
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);
}
}
}
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
Die GetEvents -Methode gibt 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.
Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Ereignisse in die Suche eingeschlossen werden sollen:
Sie müssen entweder
BindingFlags.Instance
oderBindingFlags.Static
angeben, um eine Rückgabe zu erhalten.Geben Sie
BindingFlags.Public
an, dass öffentliche Ereignisse in die Suche eingeschlossen werden sollen.Geben Sie
BindingFlags.NonPublic
an, dass nicht öffentliche Ereignisse (d. h. private, interne und geschützte Ereignisse) in die Suche eingeschlossen 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 an, dass in
BindingFlags.FlattenHierarchy
der Hierarchie statische Elemente und eingeschlossen werdenpublic
protected
sollen. Statische Member inprivate
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 für deklariert Type wurden, und nicht nach Ereignissen, 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 öffentlichen Accessor verfügt. Andernfalls gilt das Ereignis als privat, und Sie müssen | | verwenden BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static (in Visual Basic die Werte mit Or
kombinieren), um es abzurufen.
Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die EventInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt wurden.
Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Ereignisse der Klasseneinschränkung.