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.

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

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

#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
using namespace System::Windows::Forms;

int main()
{
   try
   {
      // Creates a bitmask based on BindingFlags.
      BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public | BindingFlags::NonPublic);
      Type^ myTypeBindingFlags = System::Windows::Forms::Button::typeid;
      EventInfo^ myEventBindingFlags = myTypeBindingFlags->GetEvent( "Click", myBindingFlags );
      if ( myEventBindingFlags != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class with the specified BindingFlags." );
         Console::WriteLine( myEventBindingFlags );
      }
      else
            Console::WriteLine( "The Click event is not available with the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
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);
        }
    }
}
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

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

GetEvent(String)

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

public:
 System::Reflection::EventInfo ^ GetEvent(System::String ^ name);
public:
 virtual System::Reflection::EventInfo ^ GetEvent(System::String ^ name);
public System.Reflection.EventInfo? GetEvent (string name);
public System.Reflection.EventInfo GetEvent (string name);
member this.GetEvent : string -> System.Reflection.EventInfo
abstract member GetEvent : string -> System.Reflection.EventInfo
override this.GetEvent : string -> System.Reflection.EventInfo
Public Function GetEvent (name As String) As EventInfo

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.

#using <system.dll>
#using <system.windows.forms.dll>
#using <system.drawing.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Security;

int main()
{
   try
   {
      Type^ myType = System::Windows::Forms::Button::typeid;
      EventInfo^ myEvent = myType->GetEvent( "Click" );
      if ( myEvent != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class." );
         Console::WriteLine( myEvent );
      }
      else
            Console::WriteLine( "The Click event is not available in the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
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);
        }
    }
}
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

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