Type.GetEvents Méthode

Définition

Obtient les événements qui sont déclarés ou hérités par le Type actuel.

Surcharges

GetEvents()

Retourne tous les événements publics qui sont déclarés ou hérités par le Type actuel.

GetEvents(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les événements qui sont déclarés ou hérités par le Type actuel, à l’aide des contraintes de liaison spécifiées.

GetEvents()

Retourne tous les événements publics qui sont déclarés ou hérités par le Type actuel.

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()

Retours

Tableau d'objets EventInfo représentant tous les événements publics qui sont déclarés ou hérités par le Type actuel.

- ou -

Tableau vide du type EventInfo si le Type actuel n'a pas d'événements publics.

Implémente

Exemples

L’exemple suivant obtient un tableau d’objets EventInfo , obtient tous les événements d’une Button classe et affiche les noms des événements. Pour compiler l’exemple Visual Basic, utilisez la ligne de commande suivante :

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

Remarques

Un événement est considéré comme public à réfléchir s’il a au moins une méthode ou un accesseur public. Sinon, l’événement est considéré comme privé et vous devez utiliser BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (en Visual Basic, combiner les valeurs à l’aide de Or) pour l’obtenir.

Dans .NET 6 et les versions antérieures, la GetEvents méthode ne retourne pas d’événements dans un ordre particulier, tel que l’ordre alphabétique ou l’ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les événements sont retournés, car cet ordre varie. Toutefois, à compter de .NET 7, l’ordre est déterministe en fonction de l’ordre des métadonnées dans l’assembly.

Cette méthode peut être remplacée par une classe dérivée.

Le tableau suivant montre quels membres d’une classe de base sont retournés par les méthodes lors de la Get réflexion sur un type.

Type de membre statique Non statique
Constructeur Non Non
Champ Non Oui. Un champ est toujours masqué par nom et signature.
Événement Non applicable La règle système de type courante est que l’héritage est le même que celui des méthodes qui implémentent la propriété. Reflection traite les propriétés comme masquer par nom et signature. Voir la note 2 ci-dessous.
Méthode Non Oui. Une méthode (virtuelle et non virtuelle) peut être hide-by-name ou hide-by-name-and-signature.
Type imbriqué Non Non
Propriété Non applicable La règle système de type courante est que l’héritage est le même que celui des méthodes qui implémentent la propriété. Reflection traite les propriétés comme masquer par nom et signature. Voir la note 2 ci-dessous.
  1. Masquer par nom et signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom-et-signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée n’a qu’un accesseur get, la propriété de classe dérivée masque la propriété de classe de base et vous ne pourrez pas accéder au setter sur la classe de base.

  3. Les attributs personnalisés ne font pas partie du système de type commun.

Si le courant Type représente un type générique construit, cette méthode retourne les objets avec les EventInfo paramètres de type remplacés par les arguments de type appropriés.

Si le courant Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette méthode recherche les événements de la contrainte de classe.

Voir aussi

S’applique à

GetEvents(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les événements qui sont déclarés ou hérités par le Type actuel, à l’aide des contraintes de liaison spécifiées.

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()

Paramètres

bindingAttr
BindingFlags

Combinaison de bits de valeurs d’énumération qui spécifie la façon dont est effectuée la recherche.

- ou -

Default pour retourner un tableau vide.

Retours

Tableau d'objets EventInfo représentant tous les événements qui sont déclarés ou hérités par le Type actuel et correspondent aux contraintes de liaison spécifiées.

- ou -

Tableau vide du type EventInfo si le Type actuel n'a pas d'événements ou si aucun des événements ne correspond aux contraintes de liaison.

Implémente

Exemples

L’exemple suivant obtient un tableau d’objets qui correspondent aux indicateurs de EventInfo liaison spécifiés, obtient tous les événements d’une Button classe et affiche les noms des événements. Pour compiler l’exemple Visual Basic, utilisez la ligne de commande suivante :

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

Remarques

Dans .NET 6 et les versions antérieures, la GetEvents méthode ne retourne pas d’événements dans un ordre particulier, tel que l’ordre alphabétique ou l’ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les événements sont retournés, car cet ordre varie. Toutefois, à compter de .NET 7, l’ordre est déterministe en fonction de l’ordre des métadonnées dans l’assembly.

Les indicateurs de filtre suivants BindingFlags peuvent être utilisés pour définir les événements à inclure dans la recherche :

  • Vous devez spécifier ou BindingFlags.InstanceBindingFlags.Static pour obtenir un retour.

  • Spécifiez BindingFlags.Public pour inclure des événements publics dans la recherche.

  • Spécifiez BindingFlags.NonPublic pour inclure des événements non publics (c’est-à-dire des événements privés, internes et protégés) dans la recherche. Seuls les événements protégés et internes sur les classes de base sont retournés ; les événements privés sur les classes de base ne sont pas retournés.

  • Spécifiez BindingFlags.FlattenHierarchy pour inclure et protected les public membres statiques dans la hiérarchie ; private les membres statiques dans les classes héritées ne sont pas inclus.

Les indicateurs de modification suivants BindingFlags peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.DeclaredOnly pour rechercher uniquement les événements déclarés sur , Typeet non les événements qui ont simplement été hérités.

Consultez la rubrique System.Reflection.BindingFlags (éventuellement en anglais) pour plus d'informations.

Un événement est considéré comme public à réfléchir s’il a au moins une méthode ou un accesseur public. Sinon, l’événement est considéré comme privé et vous devez utiliser BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (en Visual Basic, combiner les valeurs à l’aide de Or) pour l’obtenir.

Si le courant Type représente un type générique construit, cette méthode retourne les objets avec les EventInfo paramètres de type remplacés par les arguments de type appropriés.

Si le courant Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette méthode recherche les événements de la contrainte de classe.

Voir aussi

S’applique à