Type.GetEvent Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un evento specifico dichiarato o ereditato dall'oggetto corrente Type.
Overload
| Nome | Descrizione |
|---|---|
| GetEvent(String, BindingFlags) |
Quando sottoposto a override in una classe derivata, restituisce l'oggetto EventInfo che rappresenta l'evento specificato, utilizzando i vincoli di associazione specificati. |
| GetEvent(String) |
Restituisce l'oggetto EventInfo che rappresenta l'evento pubblico specificato. |
GetEvent(String, BindingFlags)
Quando sottoposto a override in una classe derivata, restituisce l'oggetto EventInfo che rappresenta l'evento specificato, utilizzando i vincoli di associazione specificati.
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
Parametri
- bindingAttr
- BindingFlags
Combinazione bit per bit dei valori di enumerazione che specificano come viene eseguita la ricerca.
oppure
Default per restituire null.
Valori restituiti
Oggetto che rappresenta l'evento specificato dichiarato o ereditato dall'oggetto corrente Type, se trovato; in caso contrario, null.
Implementazioni
Eccezioni
name è null.
Esempio
Nell'esempio di codice seguente viene utilizzato il metodo GetEvent(String, BindingFlags) per cercare un tipo per un evento pubblico o non pubblico denominato "Click" che non è static (Shared in 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
Commenti
Per definire gli eventi da includere nella ricerca, è possibile usare i flag di filtro seguenti BindingFlags :
È necessario specificare
BindingFlags.InstanceoBindingFlags.Staticper ottenere un ritorno.Specificare
BindingFlags.Publicper includere gli eventi pubblici nella ricerca.Specificare
BindingFlags.NonPublicdi includere eventi non pubblici , ovvero eventi privati, interni e protetti, nella ricerca.Specificare
BindingFlags.FlattenHierarchydi includerepubliceprotectedmembri statici nella gerarchia.privateI membri statici nelle classi ereditate non sono inclusi.
Per modificare il funzionamento della ricerca, è possibile usare i flag di modificatore seguenti BindingFlags :
BindingFlags.IgnoreCaseper ignorare il caso diname.BindingFlags.DeclaredOnlyper cercare solo gli eventi dichiarati in Type, non gli eventi semplicemente ereditati.
Per altre informazioni, vedere System.Reflection.BindingFlags.
Un evento viene considerato pubblico alla reflection se ha almeno un metodo o una funzione di accesso pubblica. In caso contrario, l'evento è considerato privato ed è necessario usare BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic combinare i valori usando Or) per ottenerlo.
Se l'oggetto corrente Type rappresenta un tipo generico costruito, questo metodo restituisce EventInfo con i parametri di tipo sostituiti dagli argomenti di tipo appropriati.
Se l'oggetto corrente Type rappresenta un parametro di tipo nella definizione di un tipo generico o di un metodo generico, questo metodo cerca gli eventi del vincolo di classe.
Vedi anche
Si applica a
GetEvent(String)
Restituisce l'oggetto EventInfo che rappresenta l'evento pubblico specificato.
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
Parametri
- name
- String
Stringa contenente il nome di un evento dichiarato o ereditato dall'oggetto corrente Type.
Valori restituiti
Oggetto che rappresenta l'evento pubblico specificato dichiarato o ereditato dall'oggetto corrente Type, se trovato; in caso contrario, null.
Implementazioni
Eccezioni
name è null.
Esempio
L'esempio seguente crea un EventInfo oggetto e ottiene l'evento per una classe pulsante per l'evento specificato.
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
Commenti
Un evento viene considerato pubblico alla reflection se ha almeno un metodo o una funzione di accesso pubblica. In caso contrario, l'evento è considerato privato ed è necessario usare BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic combinare i valori usando Or) per ottenerlo.
La ricerca name fa distinzione tra maiuscole e minuscole. La ricerca include eventi di istanza pubblica statica e pubblica.
Nella tabella seguente vengono illustrati i membri della classe base restituiti dai Get metodi quando si analizza un tipo.
| Tipo di membro | Statico | Non statico |
|---|---|---|
| Costruttore | No | No |
| Campo | No | Yes. Un campo è sempre nascosto per nome e firma. |
| Event | Non applicabile | La regola di sistema dei tipi comune è che l'ereditarietà è uguale a quella dei metodi che implementano la proprietà . La reflection considera le proprietà come hide-by-name-and-signature. Vedere la nota 2 di seguito. |
| Method | No | Yes. Un metodo (virtuale e non virtuale) può essere nascosto per nome o nascosto per nome e firma. |
| Tipo annidato | No | No |
| Proprietà | Non applicabile | La regola di sistema dei tipi comune è che l'ereditarietà è uguale a quella dei metodi che implementano la proprietà . La reflection considera le proprietà come hide-by-name-and-signature. Vedere la nota 2 di seguito. |
Hide-by-name-and-signature considera tutte le parti della firma, inclusi modificatori personalizzati, tipi restituiti, tipi di parametro, sentinel e convenzioni di chiamata non gestite. Si tratta di un confronto binario.
In riflessione, le proprietà e gli eventi sono hide-by-name-and-signature. Se si dispone di una proprietà con una funzione di accesso get e set nella classe base, ma la classe derivata ha solo una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere al setter nella classe base.
Gli attributi personalizzati non fanno parte del sistema di tipi comune.
Se l'oggetto corrente Type rappresenta un tipo generico costruito, questo metodo restituisce EventInfo con i parametri di tipo sostituiti dagli argomenti di tipo appropriati.
Se l'oggetto corrente Type rappresenta un parametro di tipo nella definizione di un tipo generico o di un metodo generico, questo metodo cerca gli eventi del vincolo di classe.