Type.GetEvent Metoda

Definicja

Pobiera określone zdarzenie zadeklarowane lub odziedziczone przez bieżący Type .

Przeciążenia

GetEvent(String, BindingFlags)

W przypadku przesłonięć w klasie pochodnej funkcja zwraca obiekt reprezentujący określone zdarzenie EventInfo przy użyciu określonych ograniczeń powiązania.

GetEvent(String)

Zwraca obiekt EventInfo reprezentujący określone zdarzenie publiczne.

GetEvent(String, BindingFlags)

W przypadku przesłonięć w klasie pochodnej funkcja zwraca obiekt reprezentujący określone zdarzenie EventInfo przy użyciu określonych ograniczeń powiązania.

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

Parametry

name
String

Ciąg zawierający nazwę zdarzenia, które jest zadeklarowane lub dziedziczone przez bieżący Type element .

bindingAttr
BindingFlags

Bitowa kombinacja wartości wyliczenia, które określają sposób przeprowadzania wyszukiwania.

-lub- Default , aby zwrócić null .

Zwraca

EventInfo

Obiekt reprezentujący określone zdarzenie, które jest zadeklarowane lub odziedziczone przez bieżący Type obiekt , jeśli został znaleziony. W przeciwnym razie wartość null .

Implementuje

Wyjątki

name to null.

Przykłady

W poniższym przykładzie kodu użyto metody , aby wyszukać w typie zdarzenie publiczne lub niepublicznie o nazwie "Click", które nie jest ( w GetEvent(String, BindingFlags) static 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);
        }
    }
}

Uwagi

Następujące BindingFlags flagi filtru mogą służyć do definiowania zdarzeń do dołączyć do wyszukiwania:

  • Aby uzyskać zwrot, należy określić wartość lub BindingFlags.Instance BindingFlags.Static .

  • Określ, BindingFlags.Public aby uwzględnić zdarzenia publiczne w wyszukiwaniu.

  • Określ, BindingFlags.NonPublic aby uwzględnić zdarzenia niepublicznie (czyli zdarzenia prywatne, wewnętrzne i chronione) w wyszukiwaniu.

  • Określ BindingFlags.FlattenHierarchy dołączanie public i statyczne elementy członkowskie w hierarchii; statyczne protected private składowe w klasach dziedziczonych nie są uwzględniane.

Następujące BindingFlags flagi modyfikujące mogą służyć do zmiany sposobu działania wyszukiwania:

  • BindingFlags.IgnoreCase , aby zignorować przypadek name .

  • BindingFlags.DeclaredOnly wyszukiwanie tylko zdarzeń zadeklarowanych w Type , a nie zdarzeń, które były po prostu dziedziczone.

Aby uzyskać więcej informacji, zobacz System.Reflection.BindingFlags.

Zdarzenie jest uważane za publiczne odbicie, jeżeli ma co najmniej jedną metodę lub metodę dostępu, która jest publiczna. W przeciwnym razie zdarzenie jest uznawane za prywatne i należy użyć | | (w Visual Basic połącz wartości za pomocą funkcji ) w celu BindingFlags.NonPublic BindingFlags.Instance jego BindingFlags.Static Or uzyskania.

Jeśli bieżący reprezentuje skonstruowany typ ogólny, ta metoda zwraca typ z parametrami typu zastąpionymi odpowiednimi Type EventInfo argumentami typu.

Jeśli bieżąca reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda wyszukuje zdarzenia Type ograniczenia klasy.

Zobacz też

Dotyczy

.NET 7 i inne wersje
Produkt Wersje
.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)

Zwraca obiekt EventInfo reprezentujący określone zdarzenie publiczne.

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

Parametry

name
String

Ciąg zawierający nazwę zdarzenia, które jest zadeklarowane lub dziedziczone przez bieżący Type element .

Zwraca

EventInfo

Obiekt reprezentujący określone zdarzenie publiczne, które jest zadeklarowane lub odziedziczone przez bieżący obiekt , jeśli został znaleziony. W przeciwnym Type razie null wartość .

Implementuje

Wyjątki

name to null.

Przykłady

Poniższy przykład tworzy obiekt EventInfo i pobiera zdarzenie dla klasy przycisku dla określonego zdarzenia.

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

Uwagi

Zdarzenie jest uważane za publiczne odbicie, jeżeli ma co najmniej jedną metodę lub metodę dostępu, która jest publiczna. W przeciwnym razie zdarzenie jest uznawane za prywatne i należy użyć | | (w Visual Basic połącz wartości za pomocą funkcji ) w celu BindingFlags.NonPublic BindingFlags.Instance jego BindingFlags.Static Or uzyskania.

W wyszukiwaniu name jest wielkość liter. Wyszukiwanie obejmuje publiczne statyczne i publiczne zdarzenia wystąpienia.

W poniższej tabeli przedstawiono, jakie składowe klasy bazowej są zwracane przez metody Get podczas odzwierciedlania w typie.

Typ elementu członkowskiego Static Niestatyczna
Konstruktor Nie Nie
Pole Nie Tak. Pole jest zawsze ukryte przez nazwę i podpis.
Zdarzenie Nie dotyczy Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej.
Metoda Nie Tak. Metodą (zarówno wirtualną, jak i niewirtualną) może być ukrycie przez nazwę lub przez nazwę i podpis.
Typu zagnieżdżony Nie Nie
Właściwość Nie dotyczy Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej.
  1. Ukrycie przez nazwę i podpis dotyczy wszystkich części podpisu, w tym modyfikatorów niestandardowych, zwraca typy, typy parametrów, wartowników i niezarządzane konwencje wywoływania. To jest porównanie binarne.

  2. W celu odbicia właściwości i zdarzenia są ukrywane przez nazwę i podpis. Jeśli istnieje właściwość z akcesorem pobierania i ustawiania w klasie bazowej, ale odziedziczona klasa ma tylko akcesor pobierania, właściwość klasy odziedziczonej ukrywa właściwości klasy bazowej, a nie można uzyskać dostępu do metody ustawiającej w klasie bazowej.

  3. Atrybuty niestandardowe nie są częścią wspólnego typu systemowego.

Jeśli bieżący reprezentuje skonstruowany typ ogólny, ta metoda zwraca typ z parametrami typu zastąpionymi odpowiednimi Type EventInfo argumentami typu.

Jeśli bieżąca reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda wyszukuje zdarzenia Type ograniczenia klasy.

Zobacz też

Dotyczy

.NET 7 i inne wersje
Produkt Wersje
.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