Ler em inglês

Partilhar via


Type.GetEvent Método

Definição

Obtém um evento específico declarado ou herdado pelo Type atual.

Sobrecargas

GetEvent(String, BindingFlags)

Quando substituído em uma classe derivada, retorna o objeto EventInfo que representa o evento especificado, usando as restrições de associação especificadas.

GetEvent(String)

Retorna o objeto EventInfo que representa o evento público especificado.

GetEvent(String, BindingFlags)

Quando substituído em uma classe derivada, retorna o objeto EventInfo que representa o evento especificado, usando as restrições de associação especificadas.

C#
public abstract System.Reflection.EventInfo? GetEvent (string name, System.Reflection.BindingFlags bindingAttr);
C#
public abstract System.Reflection.EventInfo GetEvent (string name, System.Reflection.BindingFlags bindingAttr);

Parâmetros

name
String

A cadeia de caracteres que contém o nome de um evento declarado ou herdado pelo Type atual.

bindingAttr
BindingFlags

Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada.

Retornos

EventInfo

O objeto que representa o evento especificado, o qual é declarado ou herdado pelo Type atual, se encontrado; caso contrário, null.

Implementações

Exceções

name é null.

Exemplos

O exemplo de código a seguir usa o método para pesquisar um tipo para um evento público ou não público chamado "Click" que não GetEvent(String, BindingFlags) é static ( no Shared Visual Basic).

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

Comentários

Os seguintes BindingFlags sinalizadores de filtro podem ser usados para definir quais eventos incluir na pesquisa:

  • Você deve especificar BindingFlags.Instance ou BindingFlags.Static para obter um retorno.

  • BindingFlags.PublicEspecifique para incluir eventos públicos na pesquisa.

  • BindingFlags.NonPublicEspecifique para incluir eventos não públicos (ou seja, eventos privados, internos e protegidos) na pesquisa.

  • 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.

Os seguintes sinalizadores de modificador BindingFlags podem ser usados para alterar como a pesquisa funciona:

  • BindingFlags.IgnoreCase para ignorar o caso de name .

  • BindingFlags.DeclaredOnly para pesquisar apenas os eventos declarados no Type , não os eventos que foram simplesmente herdados.

Consulte System.Reflection.BindingFlags para obter mais informações.

Um evento é considerado público para reflexão caso tenha pelo menos um método ou um acessador público. Caso contrário, o evento é considerado privado e você deve usar | BindingFlags.NonPublic BindingFlags.Instance | BindingFlags.Static (em Visual Basic, combine os valores usando ) para Or obter.

Caso o Type atual represente um tipo genérico construído, este método retorna o EventInfo com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.

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.

Confira também

Aplica-se a

.NET 7 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

GetEvent(String)

Retorna o objeto EventInfo que representa o evento público especificado.

C#
public System.Reflection.EventInfo? GetEvent (string name);
C#
public System.Reflection.EventInfo GetEvent (string name);

Parâmetros

name
String

A cadeia de caracteres que contém o nome de um evento que é declarado ou herdado pelo Type atual.

Retornos

EventInfo

O objeto que representa o evento público especificado, o qual é declarado ou herdado pelo Type atual, se encontrado; caso contrário, null.

Implementações

Exceções

name é null.

Exemplos

O exemplo a seguir cria EventInfo um objeto e obtém o evento de uma classe de botão para o evento especificado.

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

Comentários

Um evento é considerado público para reflexão caso tenha pelo menos um método ou um acessador público. Caso contrário, o evento é considerado privado e você deve usar | BindingFlags.NonPublic BindingFlags.Instance | BindingFlags.Static (em Visual Basic, combine os valores usando ) para Or obter.

A pesquisa de name diferencia maiúsculas de minúsculas. A pesquisa inclui eventos de instância pública estática e pública.

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.

Tipo do membro Estático Não estático
Construtor Não Não
Campo Não Sim. Um campo permanece sempre oculto por nome e assinatura.
Evento Não aplicável A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade. Reflexão trata propriedades como ocultas por nome e assinatura. Consulte a observação 2 abaixo.
Método Não Sim. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura.
Tipo aninhado Não Não
Propriedade Não aplicável A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade. Reflexão trata propriedades como ocultas por nome e assinatura. Consulte a observação 2 abaixo.
  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. Esta é uma comparação binária.

  2. Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura. 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.

  3. Atributos personalizados não fazem parte do sistema de tipo comum.

Caso o Type atual represente um tipo genérico construído, este método retorna o EventInfo com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.

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.

Confira também

Aplica-se a

.NET 7 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1