Type.GetEvent Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar en specifik händelse som deklarerats eller ärvts av den aktuella Type.
Överlagringar
| Name | Description |
|---|---|
| GetEvent(String, BindingFlags) |
När det åsidosättas i en härledd klass returnerar objektet EventInfo som representerar den angivna händelsen med hjälp av de angivna bindningsbegränsningarna. |
| GetEvent(String) |
Returnerar objektet EventInfo som representerar den angivna offentliga händelsen. |
GetEvent(String, BindingFlags)
När det åsidosättas i en härledd klass returnerar objektet EventInfo som representerar den angivna händelsen med hjälp av de angivna bindningsbegränsningarna.
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
Parametrar
- bindingAttr
- BindingFlags
En bitvis kombination av uppräkningsvärdena som anger hur sökningen ska utföras.
-eller-
Default för att returnera null.
Returer
Objektet som representerar den angivna händelsen som deklareras eller ärvs av den aktuella Type, om det hittas, annars null.
Implementeringar
Undantag
name är null.
Exempel
I följande kodexempel används metoden GetEvent(String, BindingFlags) för att söka efter en typ efter en offentlig eller icke-offentlig händelse med namnet "Klicka" som inte är static (Shared i 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
Kommentarer
Följande BindingFlags filterflaggor kan användas för att definiera vilka händelser som ska inkluderas i sökningen:
Du måste ange antingen
BindingFlags.InstanceellerBindingFlags.Staticför att få en retur.Ange
BindingFlags.Publicatt offentliga händelser ska inkluderas i sökningen.Ange
BindingFlags.NonPublicatt icke-offentliga händelser (dvs. privata, interna och skyddade händelser) ska inkluderas i sökningen.Ange
BindingFlags.FlattenHierarchyatt inkluderapublicochprotectedstatiska medlemmar i hierarkin.privateStatiska medlemmar i ärvda klasser ingår inte.
Följande BindingFlags modifierarflaggor kan användas för att ändra hur sökningen fungerar:
BindingFlags.IgnoreCaseför att ignorera falletnamemed .BindingFlags.DeclaredOnlyom du bara vill söka efter de händelser som deklarerats på Type, inte händelser som helt enkelt ärvts.
Mer information finns i System.Reflection.BindingFlags.
En händelse anses vara offentlig för reflektion om den har minst en metod eller accessor som är offentlig. Annars anses händelsen vara privat och du måste använda BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (i Visual Basic kombinera värdena med hjälp av Or) för att hämta den.
Om den aktuella Type representerar en konstruerad generisk typ returnerar den här metoden EventInfo med typparametrarna ersatta av lämpliga typargument.
Om den aktuella Type representerar en typparameter i definitionen av en allmän typ eller allmän metod söker den här metoden igenom händelserna i klassbegränsningen.
Se även
Gäller för
GetEvent(String)
Returnerar objektet EventInfo som representerar den angivna offentliga händelsen.
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
Parametrar
- name
- String
Strängen som innehåller namnet på en händelse som deklareras eller ärvs av den aktuella Type.
Returer
Objektet som representerar den angivna offentliga händelsen som deklareras eller ärvs av den aktuella Type, om det hittas, annars null.
Implementeringar
Undantag
name är null.
Exempel
I följande exempel skapas ett EventInfo objekt och händelsen hämtas för en knappklass för den angivna händelsen.
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
Kommentarer
En händelse anses vara offentlig för reflektion om den har minst en metod eller accessor som är offentlig. Annars anses händelsen vara privat och du måste använda BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (i Visual Basic kombinera värdena med hjälp av Or) för att hämta den.
Sökningen efter name är skiftlägeskänslig. Sökningen innehåller offentliga statiska och offentliga instanshändelser.
I följande tabell visas vilka medlemmar i en basklass som returneras av metoderna när de Get reflekterar över en typ.
| Medlemstyp | Statisk | Icke-statisk |
|---|---|---|
| Constructor | No | No |
| Fält | No | Ja. Ett fält är alltid dolt genom namn och signatur (hide-by-name-and-signature). |
| Händelse | Ej tillämpligt | Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan. |
| Metod | No | Ja. En metod (både virtuell och icke-virtuell) kan vara hide-by-name eller hide-by-name-and-signature. |
| Kapslad typ | No | No |
| Property | Ej tillämpligt | Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan. |
Dölj efter namn och signatur tar hänsyn till alla delar av signaturen, inklusive anpassade modifierare, returtyper, parametertyper, sentinels och ohanterade anropskonventioner. Det här är en binär jämförelse.
För reflektion är egenskaper och händelser dolda genom namn och signatur. Om du har en egenskap med både en get- och en set-accessor i basklassen, men den härledda klassen bara har en get-accessor, döljer egenskapen i den härledda klassen basklassegenskapen och du kommer inte att kunna komma åt set-accessorn i basklassen.
Anpassade attribut ingår inte i det vanliga typsystemet.
Om den aktuella Type representerar en konstruerad generisk typ returnerar den här metoden EventInfo med typparametrarna ersatta av lämpliga typargument.
Om den aktuella Type representerar en typparameter i definitionen av en allmän typ eller allmän metod söker den här metoden igenom händelserna i klassbegränsningen.