Type.GetEvents Type.GetEvents Type.GetEvents Type.GetEvents Method

Definição

Obtém os eventos que são declarados ou herdados pelo Type atual.Gets the events that are declared or inherited by the current Type.

Sobrecargas

GetEvents() GetEvents() GetEvents() GetEvents()

Retorna todos os eventos públicos que são declarados ou herdados pelo Type atual.Returns all the public events that are declared or inherited by the current Type.

GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags)

Quando substituído em uma classe derivada, procura por eventos que são declarados ou herdados pelo Type atual, usando as restrições de associação especificadas.When overridden in a derived class, searches for events that are declared or inherited by the current Type, using the specified binding constraints.

GetEvents() GetEvents() GetEvents() GetEvents()

Retorna todos os eventos públicos que são declarados ou herdados pelo Type atual.Returns all the public events that are declared or inherited by the current Type.

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

Retornos

Uma matriz de objetos EventInfo que representam todos os eventos públicos que são declarados ou herdados pelo Type atual.An array of EventInfo objects representing all the public events which are declared or inherited by the current Type.

- ou --or- Uma matriz vazia do tipo EventInfo, se o Type atual não tiver eventos públicos.An empty array of type EventInfo, if the current Type does not have public events.

Implementações

Exemplos

O exemplo a seguir obtém uma matriz de EventInfo objetos, obtém todos os eventos de uma Button classe e exibe os nomes de evento.The following example obtains an array of EventInfo objects, gets all the events for a Button class, and displays the event names. Para compilar o exemplo de Visual Basic, use a seguinte linha de comando:To compile the Visual Basic example, use the following command line:

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 'Main
End Class 'EventsSample

Comentários

Um evento é considerado público para reflexão caso tenha pelo menos um método ou um acessador público.An event is considered public to reflection if it has at least one method or accessor that is public. Caso contrário, o evento é considerado privado e você deve BindingFlags.NonPublic usar | BindingFlags.Instance | BindingFlags.Static (em Visual Basic, combinar os valores Orusando) para obtê-lo.Otherwise the event is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

O GetEvents método não retorna eventos em uma ordem específica, como ordem alfabética ou declaração.The GetEvents method does not return events in a particular order, such as alphabetical or declaration order. Seu código não deve depender da ordem em que os eventos são retornados, pois essa ordem varia.Your code must not depend on the order in which events are returned, because that order varies.

Este método pode ser substituído por uma classe derivada.This method can be overridden by a derived class.

A tabela a seguir mostra quais membros de uma classe base são retornados pelos métodos Get durante a reflexão em um tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo do membroMember Type EstáticoStatic Não estáticoNon-Static
ConstrutorConstructor NãoNo NãoNo
CampoField NãoNo Sim.Yes. Um campo permanece sempre oculto por nome e assinatura.A field is always hide-by-name-and-signature.
eventoEvent Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
MétodoMethod NãoNo Sim.Yes. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo aninhadoNested Type NãoNo NãoNo
PropriedadeProperty Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
  1. Oculto por nome e assinatura considera todas as partes da assinatura, inclusive modificadores personalizados, tipos de retorno, tipos de parâmetro, sentinelas e convenções de chamada não gerenciadas.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Esta é uma comparação binária.This is a binary comparison.

  2. Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura.For reflection, properties and events are hide-by-name-and-signature. Se você tiver uma propriedade com um acessador get e set na classe base, mas a classe derivada tiver apenas um acessador get, a propriedade de classe derivada ocultará a propriedade da classe base e você não poderá acessar o setter na classe base.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Atributos personalizados não fazem parte do sistema de tipo comum.Custom attributes are not part of the common type system.

Se o atual Type representar um tipo genérico construído, esse método retornará os EventInfo objetos com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.If the current Type represents a constructed generic type, this method returns the EventInfo objects with the type parameters replaced by the appropriate type arguments.

Caso o Type atual represente um parâmetro de tipo na definição de um tipo genérico ou um método genérico, este método pesquisa os eventos da restrição de classe.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the events of the class constraint.

Veja também

GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags)

Quando substituído em uma classe derivada, procura por eventos que são declarados ou herdados pelo Type atual, usando as restrições de associação especificadas.When overridden in a derived class, searches for events that are declared or inherited by the current Type, using the specified binding constraints.

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

Parâmetros

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada.A bitwise combination of the enumeration values that specify how the search is conducted.

- ou --or-

Default para retornar uma matriz vazia.Default to return an empty array.

Retornos

Uma matriz de objetos EventInfo que representam todos os eventos que são declarados ou herdados pelo Type atual, que corresponde às restrições de associação especificadas.An array of EventInfo objects representing all events that are declared or inherited by the current Type that match the specified binding constraints.

- ou --or- Uma matriz vazia do tipo EventInfo, se o Type atual não tiver eventos ou se nenhum dos eventos corresponderem às restrições de associação.An empty array of type EventInfo, if the current Type does not have events, or if none of the events match the binding constraints.

Implementações

Exemplos

O exemplo a seguir obtém uma matriz de EventInfo objetos que correspondem aos sinalizadores de associação especificados, obtém todos os eventos de Button uma classe e exibe os nomes dos eventos.The following example obtains an array of EventInfo objects that match the specified binding flags, gets all the events for a Button class, and displays the event names. Para compilar o exemplo de Visual Basic, use a seguinte linha de comando:To compile the Visual Basic example, use the following command line:

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 'Main
End Class 'EventsSample

Comentários

O GetEvents método não retorna eventos em uma ordem específica, como ordem alfabética ou declaração.The GetEvents method does not return events in a particular order, such as alphabetical or declaration order. Seu código não deve depender da ordem em que os eventos são retornados, pois essa ordem varia.Your code must not depend on the order in which events are returned, because that order varies.

Os seguintes BindingFlags sinalizadores de filtro podem ser usados para definir quais eventos incluir na pesquisa:The following BindingFlags filter flags can be used to define which events to include in the search:

  • Você deve especificar BindingFlags.Instance ou BindingFlags.Static para obter um retorno.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Especifique BindingFlags.Public para incluir eventos públicos na pesquisa.Specify BindingFlags.Public to include public events in the search.

  • Especifique BindingFlags.NonPublic para incluir eventos não públicos (ou seja, eventos privados, internos e protegidos) na pesquisa.Specify BindingFlags.NonPublic to include non-public events (that is, private, internal, and protected events) in the search. Somente eventos protegidos e internos em classes base são retornados; eventos privados em classes base não são retornados.Only protected and internal events on base classes are returned; private events on base classes are not returned.

  • Especifique BindingFlags.FlattenHierarchy para incluir os membros estáticos public e protected acima na hierarquia; os membros estáticos private em classes herdadas não são incluídos.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Os seguintes sinalizadores de modificador BindingFlags podem ser usados para alterar como a pesquisa funciona:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.DeclaredOnlypara pesquisar somente os eventos declarados Typenos eventos que são simplesmente herdados.BindingFlags.DeclaredOnly to search only the events declared on the Type, not events that were simply inherited.

Consulte System.Reflection.BindingFlags para obter mais informações.See System.Reflection.BindingFlags for more information.

Um evento é considerado público para reflexão caso tenha pelo menos um método ou um acessador público.An event is considered public to reflection if it has at least one method or accessor that is public. Caso contrário, o evento é considerado privado e você deve BindingFlags.NonPublic usar | BindingFlags.Instance | BindingFlags.Static (em Visual Basic, combinar os valores Orusando) para obtê-lo.Otherwise the event is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Se o atual Type representar um tipo genérico construído, esse método retornará os EventInfo objetos com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.If the current Type represents a constructed generic type, this method returns the EventInfo objects with the type parameters replaced by the appropriate type arguments.

Caso o Type atual represente um parâmetro de tipo na definição de um tipo genérico ou um método genérico, este método pesquisa os eventos da restrição de classe.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the events of the class constraint.

Veja também

Aplica-se a