Type.GetEvent Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém um evento específico declarado ou herdado pelo atual Type.
Sobrecargas
| Name | Description |
|---|---|
| GetEvent(String, BindingFlags) |
Quando sobrescrito numa classe derivada, devolve o EventInfo objeto que representa o evento especificado, usando as restrições de ligação especificadas. |
| GetEvent(String) |
Devolve o EventInfo objeto que representa o evento público especificado. |
GetEvent(String, BindingFlags)
Quando sobrescrito numa classe derivada, devolve o EventInfo objeto que representa o evento especificado, usando as restrições de ligação 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);
abstract member GetEvent : string * System.Reflection.BindingFlags -> System.Reflection.EventInfo
Public MustOverride Function GetEvent (name As String, bindingAttr As BindingFlags) As EventInfo
Parâmetros
- bindingAttr
- BindingFlags
Uma combinação bit a bit dos valores de enumeração que especifica como a pesquisa é realizada.
-ou-
Default para regressar null.
Devoluções
O objeto que representa o evento especificado que é declarado ou herdado pelo atual Type, se encontrado; caso contrário, null.
Implementações
Exceções
name é null.
Exemplos
O exemplo de código seguinte utiliza o método GetEvent(String, BindingFlags) para pesquisar um tipo por um evento público ou não público chamado "Click" que não seja static (Shared em 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
Observações
Os seguintes BindingFlags flags de filtro podem ser usados para definir quais os eventos a incluir na pesquisa:
Você deve especificar ou
BindingFlags.InstanceouBindingFlags.Staticpara obter um retorno.Especifique
BindingFlags.Publicincluir eventos públicos na pesquisa.Especifique
BindingFlags.NonPublicincluir eventos não públicos (ou seja, privados, internos e protegidos) na busca.Especifique
BindingFlags.FlattenHierarchypara incluirpubliceprotectedmembros estáticos na hierarquia;privatemembros estáticos em classes herdadas não são incluídos.
Os seguintes BindingFlags sinalizadores modificadores podem ser usados para alterar o funcionamento da pesquisa:
BindingFlags.IgnoreCaseignorar o caso dename.BindingFlags.DeclaredOnlyprocurar 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 se tiver pelo menos um método ou acessório que seja público. Caso contrário, o evento é considerado privado, e deve usar BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (em Visual Basic, combinar os valores usando Or) para o obter.
Se o current Type representa um tipo genérico construído, esse método retorna o EventInfo com os parâmetros type substituídos pelos argumentos de tipo apropriados.
Se a corrente Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, este método pesquisa os eventos da restrição de classe.
Ver também
Aplica-se a
GetEvent(String)
Devolve o EventInfo objeto que representa o evento público especificado.
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
Parâmetros
Devoluções
O objeto que representa o evento público especificado que é declarado ou herdado pelo atual Type, se encontrado; caso contrário, null.
Implementações
Exceções
name é null.
Exemplos
O exemplo seguinte cria um EventInfo objeto e obtém o evento para uma classe de botão para o evento especificado.
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
Observações
Um evento é considerado público para reflexão se tiver pelo menos um método ou acessório que seja público. Caso contrário, o evento é considerado privado, e deve usar BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (em Visual Basic, combinar os valores usando Or) para o obter.
A pesquisa diferencia name maiúsculas de minúsculas. A pesquisa inclui eventos públicos estáticos e de instância pública.
A tabela a seguir mostra quais membros de uma classe base são retornados pelos Get métodos ao refletir sobre um tipo.
| Tipo de Membro | Estático | Não-estático |
|---|---|---|
| Construtor | No | No |
| Campo | No | Yes. Um campo é sempre ocultado com base no nome e assinatura. |
| Event | Não aplicável | A regra comum do sistema de tipos é que a herança é a mesma dos métodos que implementam a propriedade. A reflexão trata propriedades como esconder pelo nome e assinatura. Veja a nota 2 abaixo. |
| Método | No | Yes. Um método (virtual e não virtual) pode ser ocultado por nome ou ocultado por nome e assinatura. |
| Tipo aninhado | No | No |
| Property | Não aplicável | A regra comum do sistema de tipos é que a herança é a mesma dos métodos que implementam a propriedade. A reflexão trata propriedades como esconder pelo nome e assinatura. Veja a nota 2 abaixo. |
Ocultar por nome e assinatura considera todas as partes da assinatura, incluindo modificadores personalizados, tipos de retorno, tipos de parâmetros, sentinelas e convenções de chamada não gerenciadas. Esta é uma comparação binária.
Para reflexão, as propriedades e os eventos são ocultados por nome e assinatura. Se você tiver uma propriedade com um acessador get e um set na classe base, mas a classe derivada tiver apenas um acessor get, a propriedade de classe derivada ocultará a propriedade de classe base e você não poderá acessar o setter na classe base.
Os atributos personalizados não fazem parte do sistema de tipo comum.
Se o current Type representa um tipo genérico construído, esse método retorna o EventInfo com os parâmetros type substituídos pelos argumentos de tipo apropriados.
Se a corrente Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, este método pesquisa os eventos da restrição de classe.