Type.GetEvent Type.GetEvent Type.GetEvent Type.GetEvent Method

Определение

Получает определенное событие, которое объявлено или унаследовано в текущем объекте Type.Gets a specific event declared or inherited by the current Type.

Перегрузки

GetEvent(String) GetEvent(String) GetEvent(String) GetEvent(String)

Возвращает объект EventInfo, представляющий указанное открытое событие.Returns the EventInfo object representing the specified public event.

GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags)

При переопределении в производном классе возвращает объект EventInfo, представляющий указанное событие, используя для этого указанные ограничения привязки.When overridden in a derived class, returns the EventInfo object representing the specified event, using the specified binding constraints.

GetEvent(String) GetEvent(String) GetEvent(String) GetEvent(String)

Возвращает объект EventInfo, представляющий указанное открытое событие.Returns the EventInfo object representing the specified public event.

public:
 virtual 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
Public Function GetEvent (name As String) As EventInfo

Параметры

name
String String String String

Строка, содержащая имя события, которое объявлено или унаследовано текущим типом Type.The string containing the name of an event that is declared or inherited by the current Type.

Возвраты

Объект, представляющий указанное открытое событие, которое объявлено или унаследовано в текущем объекте Type, если такое событие найдено; в противном случае — null.The object representing the specified public event that is declared or inherited by the current Type, if found; otherwise, null.

Реализации

Исключения

Примеры

В следующем примере создается EventInfo объекта и возвращает событие класса button для указанного события.The following example creates an EventInfo object and gets the event for a button class for the specified event.

#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
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic

' 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 'Main
End Class 'MyEventExample

Комментарии

Событие считается открытым для отражения, если он имеет по крайней мере один метод или метод доступа, который является общим.An event is considered public to reflection if it has at least one method or accessor that is public. В противном случае событие считается закрытым, и необходимо использовать BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (в Visual Basic, объединить значения, с помощью Or) для его получения.Otherwise the event is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Поиск name чувствителен к регистру.The search for name is case-sensitive. Поиск включает общедоступный статический и открытый экземпляр события.The search includes public static and public instance events.

В следующей таблице показаны, какие члены базового класса возвращаются Get методы при отражении типа.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Тип членаMember Type StaticStatic СтатическимNon-Static
КонструкторConstructor НетNo НетNo
ПолеField НетNo Да.Yes. Поле всегда равно по имени и подписи.A field is always hide-by-name-and-signature.
событиеEvent НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
МетодMethod НетNo Да.Yes. Метод (виртуальные и невиртуальные) можно скрыть по имени или по имени и подписи.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Вложенный типNested Type НетNo НетNo
Свойство.Property НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
  1. По имени и подписи считает, что все части сигнатуры, включая настраиваемые модификаторы, возвращают типы, типы параметров, меток и соглашения о неуправляемых вызовах.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Это двоичное сравнение.This is a binary comparison.

  2. Для отражения свойства и события являются по имени и подписи.For reflection, properties and events are hide-by-name-and-signature. Если у вас есть свойство с get и set в базовом классе, но производный класс имеет только метод доступа get, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу set в базовом классе.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Настраиваемые атрибуты не являются частью система общих типов CTS.Custom attributes are not part of the common type system.

Если текущий Type представляет сконструированный универсальный тип, этот метод возвращает EventInfo с параметрами типа, заменены соответствующими аргументами типа.If the current Type represents a constructed generic type, this method returns the EventInfo with the type parameters replaced by the appropriate type arguments.

Если текущий Type представляет параметр типа в определении универсального типа или метода, этот метод ищет события ограничения класса.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the events of the class constraint.

Дополнительно

GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags) GetEvent(String, BindingFlags)

При переопределении в производном классе возвращает объект EventInfo, представляющий указанное событие, используя для этого указанные ограничения привязки.When overridden in a derived class, returns the EventInfo object representing the specified event, using the specified binding constraints.

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

Параметры

name
String String String String

Строка, содержащая имя события, которое объявлено или унаследовано текущим типом Type.The string containing the name of an event which is declared or inherited by the current Type.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Побитовое сочетание значений перечисления, указывающих способ проведения поиска.A bitwise combination of the enumeration values that specify how the search is conducted.

-или--or- Default для возврата null.Default to return null.

Возвраты

Объект, представляющий указанное событие, которое объявлено или унаследовано текущим типом Type, если такое событие найдено; null в противном случае.The object representing the specified event that is declared or inherited by the current Type, if found; otherwise, null.

Реализации

Исключения

Примеры

В следующем примере кода используется GetEvent(String, BindingFlags) метод для поиска типа public или не являющиеся открытыми события с именем «Щелкните», не static (Shared в Visual Basic).The following code example uses the GetEvent(String, BindingFlags) method to search a type for a public or non-public event named "Click" that is not static (Shared in 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
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic

' 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 'Main
End Class 'MyEventExample

Комментарии

Следующие BindingFlags флаги фильтра можно использовать для определения, какие события, чтобы включить в поиск:The following BindingFlags filter flags can be used to define which events to include in the search:

  • Необходимо указать либо BindingFlags.Instance или BindingFlags.Static Чтобы получить возвращаемое значение.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Укажите BindingFlags.Public для включения в поиск открытых событий.Specify BindingFlags.Public to include public events in the search.

  • Укажите BindingFlags.NonPublic для включения в поиск закрытые событий (то есть внутренней, закрытые и защищенные).Specify BindingFlags.NonPublic to include non-public events (that is, private, internal, and protected events) in the search.

  • Укажите BindingFlags.FlattenHierarchy для включения public и protected статические члены вверху иерархии; private статические члены в наследуемых классах не включаются.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Следующие BindingFlags флаги модификаторов, которые можно использовать для изменения условий поиска:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase Чтобы игнорировать регистр name.BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly для поиска только события, объявленные на Type, не события, унаследованные.BindingFlags.DeclaredOnly to search only the events declared on the Type, not events that were simply inherited.

Дополнительные сведения см. в разделе System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Событие считается открытым для отражения, если он имеет по крайней мере один метод или метод доступа, который является общим.An event is considered public to reflection if it has at least one method or accessor that is public. В противном случае событие считается закрытым, и необходимо использовать BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (в Visual Basic, объединить значения, с помощью Or) для его получения.Otherwise the event is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Если текущий Type представляет сконструированный универсальный тип, этот метод возвращает EventInfo с параметрами типа, заменены соответствующими аргументами типа.If the current Type represents a constructed generic type, this method returns the EventInfo with the type parameters replaced by the appropriate type arguments.

Если текущий Type представляет параметр типа в определении универсального типа или метода, этот метод ищет события ограничения класса.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the events of the class constraint.

Дополнительно

Применяется к