Type.GetEvent Méthode

Définition

Obtient un événement spécifique déclaré ou hérité par le paramètre actif Type.

Surcharges

Nom Description
GetEvent(String, BindingFlags)

En cas de substitution dans une classe dérivée, retourne l’objet EventInfo représentant l’événement spécifié, à l’aide des contraintes de liaison spécifiées.

GetEvent(String)

Retourne l’objet EventInfo représentant l’événement public spécifié.

GetEvent(String, BindingFlags)

En cas de substitution dans une classe dérivée, retourne l’objet EventInfo représentant l’événement spécifié, à l’aide des contraintes de liaison spécifiées.

public:
 abstract System::Reflection::EventInfo ^ GetEvent(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetEvent : string * System.Reflection.BindingFlags -> System.Reflection.EventInfo
Public MustOverride Function GetEvent (name As String, bindingAttr As BindingFlags) As EventInfo

Paramètres

name
String

Nom d’un événement déclaré ou hérité par le paramètre actif Type.

bindingAttr
BindingFlags

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

-ou-

Default pour retourner null.

Retours

Objet représentant l’événement spécifié qui est déclaré ou hérité par l’objet actuel Type, s’il est trouvé ; sinon, null.

Implémente

Exceptions

name a la valeur null.

Exemples

L’exemple de code suivant utilise la méthode GetEvent(String, BindingFlags) pour rechercher un type pour un événement public ou non public nommé « Click » qui n’est pas static (Shared dans Visual Basic).

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

class MyEventExample
{
    public static void Main()
    {
        try
        {

            // Creates a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
            Type myTypeBindingFlags = typeof(System.Windows.Forms.Button);
            EventInfo myEventBindingFlags = myTypeBindingFlags.GetEvent("Click", myBindingFlags);
            if(myEventBindingFlags != null)
            {
                Console.WriteLine("Looking for the Click event in the Button class with the specified BindingFlags.");
                Console.WriteLine(myEventBindingFlags.ToString());
            }
            else
            {
                Console.WriteLine("The Click event is not available with the Button class.");
            }
        }
        catch(SecurityException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("The following exception was raised : {0}",e.Message);
        }
    }
}
open System
open System.Reflection
open System.Security

try
    // Creates a bitmask based on BindingFlags.
    let myBindingFlags = BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic
    let myTypeBindingFlags = typeof<System.Windows.Forms.Button>
    let myEventBindingFlags = myTypeBindingFlags.GetEvent("Click", myBindingFlags)
    if myEventBindingFlags <> null then
        printfn $"Looking for the Click event in the Button class with the specified BindingFlags.\n{myEventBindingFlags}"
    else
        printfn "The Click event is not available with the Button class."
with
| :? SecurityException as e ->
    printfn "An exception occurred."
    printfn $"Message :{e.Message}"
| :? ArgumentNullException as e ->
    printfn "An exception occurred."
    printfn $"Message :{e.Message}"
| e ->
    printfn $"The following exception was raised : {e.Message}"
Imports System.Reflection
Imports System.Security

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

Class MyEventExample
    Public Shared Sub Main()
        Try
            ' Creates a bitmask comprising  BindingFlags.
            Dim myBindingFlags As BindingFlags = BindingFlags.Instance Or BindingFlags.Public _
                                                 Or BindingFlags.NonPublic
            Dim myTypeBindingFlags As Type = GetType(System.Windows.Forms.Button)
            Dim myEventBindingFlags As EventInfo = myTypeBindingFlags.GetEvent("Click", myBindingFlags)
            If myEventBindingFlags IsNot Nothing Then
                Console.WriteLine("Looking for the Click event in the Button class with the specified BindingFlags.")
                Console.WriteLine(myEventBindingFlags.ToString())
            Else
                Console.WriteLine("The Click event is not available with the Button class.")
            End If
        Catch e As SecurityException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As Exception
            Console.WriteLine("The following exception was raised : {0}", e.Message)
        End Try
    End Sub
End Class

Remarques

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

  • Vous devez spécifier soit BindingFlags.Instance soit BindingFlags.Static pour obtenir un retour.

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

  • Spécifiez BindingFlags.NonPublic d’inclure des événements non publics (c’est-à-dire des événements privés, internes et protégés) dans la recherche.

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

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

  • BindingFlags.IgnoreCase pour ignorer le cas de name.

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

Pour plus d’informations, consultez System.Reflection.BindingFlags.

Un événement est considéré comme public pour la réflexion 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.Instance | BindingFlags.Static (dans Visual Basic, combiner les valeurs à l’aide de Or) pour l’obtenir.

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

Si le paramètre actuel 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 à

GetEvent(String)

Retourne l’objet EventInfo représentant l’événement public spécifié.

public:
 virtual System::Reflection::EventInfo ^ GetEvent(System::String ^ name);
public:
 System::Reflection::EventInfo ^ GetEvent(System::String ^ name);
public System.Reflection.EventInfo GetEvent(string name);
abstract member GetEvent : string -> System.Reflection.EventInfo
override this.GetEvent : string -> System.Reflection.EventInfo
member this.GetEvent : string -> System.Reflection.EventInfo
Public Function GetEvent (name As String) As EventInfo

Paramètres

name
String

Chaîne contenant le nom d’un événement déclaré ou hérité par le paramètre actif Type.

Retours

Objet représentant l’événement public spécifié qui est déclaré ou hérité par l’objet actif Type, s’il est trouvé ; sinon, null.

Implémente

Exceptions

name a la valeur null.

Exemples

L’exemple suivant crée un EventInfo objet et obtient l’événement d’une classe button pour l’événement spécifié.

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

class MyEventExample
{
    public static void Main()
    {
        try
        {

            Type myType = typeof(System.Windows.Forms.Button);
            EventInfo myEvent = myType.GetEvent("Click");
            if(myEvent != null)
            {
                Console.WriteLine("Looking for the Click event in the Button class.");
                Console.WriteLine(myEvent.ToString());
            }
            else
            {
                Console.WriteLine("The Click event is not available in the Button class.");
            }
        }
        catch(SecurityException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("The following exception was raised : {0}",e.Message);
        }
    }
}
open System
open System.Security

try
    let myType = typeof<System.Windows.Forms.Button>
    let myEvent = myType.GetEvent "Click"
    if myEvent <> null then
        printfn $"Looking for the Click event in the Button class.\n{myEvent}"
    else
        printfn "The Click event is not available in the Button class."
with
| :? SecurityException as e ->
    printfn "An exception occurred."
    printfn $"Message :{e.Message}"
| :? ArgumentNullException as e ->
    printfn "An exception occurred."
    printfn $"Message :{e.Message}"
| e ->
    printfn $"The following exception was raised : {e.Message}"
Imports System.Reflection
Imports System.Security

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

Class MyEventExample
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(System.Windows.Forms.Button)
            Dim myEvent As EventInfo = myType.GetEvent("Click")
            If Not (myEvent Is Nothing) Then
                Console.WriteLine(ControlChars.Cr + "Looking for the Click event in the Button class.")
                Console.WriteLine(ControlChars.Cr + myEvent.ToString())
            Else
                Console.WriteLine("The Click event is not available with the Button class.")
            End If
        Catch e As SecurityException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As Exception
            Console.WriteLine("The following exception was raised : {0}", e.Message)
        End Try
    End Sub
End Class

Remarques

Un événement est considéré comme public pour la réflexion 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.Instance | BindingFlags.Static (dans Visual Basic, combiner les valeurs à l’aide de Or) pour l’obtenir.

La recherche de name respecte la casse. La recherche inclut des événements d’instance statiques et publiques publics.

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

Type de membre statique Non statique
Constructor Non Non
Champ Non Yes. Un champ est toujours masqué par nom et signature.
Événement Sans objet La règle du système de type courant est que l'héritage est identique à celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquage par nom et signature. Voir la note 2 ci-dessous.
Method Non Yes. Une méthode (virtuelle et non virtuelle) peut être masquée par nom ou par nom et signature.
Type imbriqué Non Non
Propriété Sans objet La règle du système de type courant est que l'héritage est identique à celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquage par nom et signature. Voir la note 2 ci-dessous.
  1. Hide-by-name-and-signature prend en compte toutes les parties de la signature, notamment 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 type actuel Type représente un type générique construit, cette méthode retourne les EventInfo paramètres de type remplacés par les arguments de type appropriés.

Si le paramètre actuel 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 à