Type.GetEvent Método

Definición

Obtiene un evento específico declarado o heredado por el objeto Type actual.

Sobrecargas

GetEvent(String, BindingFlags)

Cuando se invalida en una clase derivada, devuelve el objeto EventInfo que representa el evento especificado y aplica las restricciones de enlace especificadas.

GetEvent(String)

Devuelve el objeto EventInfo que representa el evento público especificado.

GetEvent(String, BindingFlags)

Cuando se invalida en una clase derivada, devuelve el objeto EventInfo que representa el evento especificado y aplica las restricciones de enlace especificadas.

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

Parámetros

name
String

Cadena que contiene el nombre de un evento que la clase Type actual declara o hereda.

bindingAttr
BindingFlags

Combinación bit a bit de los valores de enumeración que especifican cómo se realiza la búsqueda.

O bien Default para devolver null.

Devoluciones

EventInfo

Objeto que representa el evento especificado que declara o hereda el Type actual, si se encuentra; de lo contrario, es null.

Implementaciones

Excepciones

name es null.

Ejemplos

En el ejemplo de código siguiente se usa el método para buscar un tipo para un evento público o no público denominado "Click" que no sea GetEvent(String, BindingFlags) static ( en Shared Visual Basic).

#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
using namespace System::Windows::Forms;

int main()
{
   try
   {
      // Creates a bitmask based on BindingFlags.
      BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public | BindingFlags::NonPublic);
      Type^ myTypeBindingFlags = System::Windows::Forms::Button::typeid;
      EventInfo^ myEventBindingFlags = myTypeBindingFlags->GetEvent( "Click", myBindingFlags );
      if ( myEventBindingFlags != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class with the specified BindingFlags." );
         Console::WriteLine( myEventBindingFlags );
      }
      else
            Console::WriteLine( "The Click event is not available with the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
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);
        }
    }
}
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

Comentarios

Las siguientes BindingFlags marcas de filtro se pueden usar para definir qué eventos se incluirán en la búsqueda:

  • Debe especificar o BindingFlags.Instance BindingFlags.Static para obtener una devolución.

  • Especifique BindingFlags.Public para incluir eventos públicos en la búsqueda.

  • Especifique BindingFlags.NonPublic para incluir eventos no públicos (es decir, eventos privados, internos y protegidos) en la búsqueda.

  • Especifique para incluir los miembros estáticos y en la jerarquía; no se incluyen los miembros estáticos de BindingFlags.FlattenHierarchy public las clases protected private heredadas.

Se pueden BindingFlags usar las siguientes marcas modificadoras para cambiar el funcionamiento de la búsqueda:

  • BindingFlags.IgnoreCase para pasar por alto el caso de name .

  • BindingFlags.DeclaredOnly para buscar solo los eventos declarados en Type , no los eventos que simplemente se heredaron.

Vea System.Reflection.BindingFlags para obtener más información.

Un evento se considera público para la reflexión si tiene al menos un método o un accessor que es público. De lo contrario, el evento se considera privado y debe usar | | (en Visual Basic, combine los valores mediante BindingFlags.NonPublic BindingFlags.Instance ) para BindingFlags.Static Or obtenerlo.

Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type EventInfo reemplazados por los argumentos de tipo adecuados.

Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los Type eventos de la restricción de clase.

Consulte también

Se aplica a

GetEvent(String)

Devuelve el objeto EventInfo que representa el evento público especificado.

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

Parámetros

name
String

Cadena que contiene el nombre de un evento que la clase Type actual declaró o heredó.

Devoluciones

EventInfo

Objeto que representa el evento público especificado que declara o hereda el Type actual, si se encuentra; de lo contrario es null.

Implementaciones

Excepciones

name es null.

Ejemplos

En el ejemplo siguiente se crea EventInfo un objeto y se obtiene el evento de una clase de botón para el evento especificado.

#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;
      EventInfo^ myEvent = myType->GetEvent( "Click" );
      if ( myEvent != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class." );
         Console::WriteLine( myEvent );
      }
      else
            Console::WriteLine( "The Click event is not available in the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
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);
        }
    }
}
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

Comentarios

Un evento se considera público para la reflexión si tiene al menos un método o un accessor que es público. De lo contrario, el evento se considera privado y debe usar | | (en Visual Basic, combine los valores mediante BindingFlags.NonPublic BindingFlags.Instance ) para BindingFlags.Static Or obtenerlo.

La búsqueda de name distingue mayúsculas de minúsculas. La búsqueda incluye eventos públicos de instancias públicas y estáticas.

En la tabla siguiente se muestra qué miembros de una clase base devuelven los métodos Get al reflejar en un tipo.

Tipo de miembro Estático No estático
Constructor No No
Campo No Sí. Un campo siempre se oculta por nombre y firma.
evento No es aplicable La regla común del sistema de tipos es que la herencia es la misma que la de los métodos que implementan la propiedad . La reflexión trata las propiedades como hide-by-name-and-signature. Consulte la nota 2 a continuación.
Método No Sí. Un método (virtual y no virtual) puede ser hide-by-name u hide-by-name-and-signature.
Tipo anidado No No
Propiedad. No es aplicable La regla común del sistema de tipos es que la herencia es la misma que la de los métodos que implementan la propiedad . La reflexión trata las propiedades como hide-by-name-and-signature. Consulte la nota 2 a continuación.
  1. Ocultar por nombre y firma tiene en cuenta todas las partes de la firma, incluidos los modificadores personalizados, los tipos de valor devuelto, los tipos de parámetros, los centinelas y las convenciones de llamada no administradas. Se trata de una comparación binaria.

  2. Para la reflexión, las propiedades y los eventos se ocultan por nombre y firma. Si tiene una propiedad con un accessor get y set en la clase base, pero la clase derivada solo tiene un accessor get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá acceder al establecedor en la clase base.

  3. Los atributos personalizados no forman parte del sistema de tipos común.

Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type EventInfo reemplazados por los argumentos de tipo adecuados.

Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los Type eventos de la restricción de clase.

Consulte también

Se aplica a