Type.GetEvents Type.GetEvents Type.GetEvents Type.GetEvents Method

Определение

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

Перегрузки

GetEvents() GetEvents() GetEvents() GetEvents()

Возвращает все открытые события, которые объявлены или унаследованы текущим объектом Type.Returns all the public events that are declared or inherited by the current Type.

GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags)

При переопределении в производном классе ищет события, которые объявлены или унаследованы текущим объектом Type, используя указанные ограничения привязки.When overridden in a derived class, searches for events that are declared or inherited by the current Type, using the specified binding constraints.

GetEvents() GetEvents() GetEvents() GetEvents()

Возвращает все открытые события, которые объявлены или унаследованы текущим объектом Type.Returns all the public events that are declared or inherited by the current Type.

public:
 virtual cli::array <System::Reflection::EventInfo ^> ^ GetEvents();
public virtual System.Reflection.EventInfo[] GetEvents ();
abstract member GetEvents : unit -> System.Reflection.EventInfo[]
override this.GetEvents : unit -> System.Reflection.EventInfo[]
Public Overridable Function GetEvents () As EventInfo()

Возвраты

Массив объектов EventInfo, представляющий все открытые события, которые объявлены или унаследованы текущим объектом Type.An array of EventInfo objects representing all the public events which are declared or inherited by the current Type.

-или--or- Пустой массив типа EventInfo, если в текущем объекте Type нет открытых событий.An empty array of type EventInfo, if the current Type does not have public events.

Реализации

Примеры

В следующем примере извлекается массив EventInfo объекты, возвращаются все события Button класса и отображает имена событий.The following example obtains an array of EventInfo objects, gets all the events for a Button class, and displays the event names. Чтобы скомпилировать этот пример Visual Basic, используйте следующую команду:To compile the Visual Basic example, use the following command line:

vbc type_getevents1.vb /r:System.Windows.Forms.dll /r:System.dll

#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;
      array<EventInfo^>^myEvents = myType->GetEvents();
      Console::WriteLine( "The events on the Button class are: " );
      for ( int index = 0; index < myEvents->Length; index++ )
      {
         Console::WriteLine( myEvents[ index ] );

      }
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

class EventsSample
{
    public static void Main()
    { 
        try
        {
            // Creates a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public;  
            Type myTypeEvent = typeof(System.Windows.Forms.Button);
            EventInfo[] myEventsBindingFlags = myTypeEvent.GetEvents(myBindingFlags);
            Console.WriteLine("\nThe events on the Button class with the specified BindingFlags are : ");
            for (int index = 0; index < myEventsBindingFlags.Length; index++)
            {
                Console.WriteLine(myEventsBindingFlags[index].ToString());
            }
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException :" + e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException : " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception : " + e.Message);
        }
    }
}
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic

' Compile this sample using the following command line:
' vbc type_getevents.vb /r:"System.Windows.Forms.dll" /r:"System.dll"

Class EventsSample

    Public Shared Sub Main()
        Try
            ' Creates a bitmask based on BindingFlags.
            Dim myBindingFlags As BindingFlags = BindingFlags.Instance Or BindingFlags.Public
            Dim myTypeEvent As Type = GetType(System.Windows.Forms.Button)
            Dim myEventsBindingFlags As EventInfo() = myTypeEvent.GetEvents(myBindingFlags)
            Console.WriteLine(ControlChars.Cr + "The events on the Button class with the specified BindingFlags are : ")
            Dim index As Integer
            For index = 0 To myEventsBindingFlags.Length - 1
                Console.WriteLine(myEventsBindingFlags(index).ToString())
            Next index
        Catch e As SecurityException
            Console.WriteLine(("SecurityException :" + e.Message))
        Catch e As ArgumentNullException
            Console.WriteLine(("ArgumentNullException : " + e.Message))
        Catch e As Exception
            Console.WriteLine(("Exception : " + e.Message))
        End Try
    End Sub 'Main
End Class 'EventsSample

Комментарии

Событие считается открытым для отражения, если он имеет по крайней мере один метод или метод доступа, который является общим.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.

GetEvents Метод не возвращает события в определенном порядке, такие как алфавитном или в порядке объявления.The GetEvents method does not return events in a particular order, such as alphabetical or declaration order. Ваш код не должен зависеть от порядка, в котором возвращаются события, так как этот порядок меняется.Your code must not depend on the order in which events are returned, because that order varies.

Этот метод может быть переопределен производным классом.This method can be overridden by a derived class.

В следующей таблице показаны, какие члены базового класса возвращаются 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 objects 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.

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

GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags) GetEvents(BindingFlags)

При переопределении в производном классе ищет события, которые объявлены или унаследованы текущим объектом Type, используя указанные ограничения привязки.When overridden in a derived class, searches for events that are declared or inherited by the current Type, using the specified binding constraints.

public:
 abstract cli::array <System::Reflection::EventInfo ^> ^ GetEvents(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.EventInfo[] GetEvents (System.Reflection.BindingFlags bindingAttr);
abstract member GetEvents : System.Reflection.BindingFlags -> System.Reflection.EventInfo[]
Public MustOverride Function GetEvents (bindingAttr As BindingFlags) As EventInfo()

Параметры

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

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

-или--or-

Default для возврата пустого массива.Default to return an empty array.

Возвраты

Массив объектов EventInfo, представляющий все события, которые объявлены или унаследованы данным объектом Type и удовлетворяют указанным ограничениям привязки.An array of EventInfo objects representing all events that are declared or inherited by the current Type that match the specified binding constraints.

-или--or- Пустой массив типа EventInfo, если у текущего типа Type нет событий или ни одно событие не удовлетворяет ограничениям привязки.An empty array of type EventInfo, if the current Type does not have events, or if none of the events match the binding constraints.

Реализации

Примеры

В следующем примере извлекается массив EventInfo объектов, соответствующих заданным флагам привязки, возвращаются все события Button класса и отображает имена событий.The following example obtains an array of EventInfo objects that match the specified binding flags, gets all the events for a Button class, and displays the event names. Чтобы скомпилировать этот пример Visual Basic, используйте следующую команду:To compile the Visual Basic example, use the following command line:

vbc type_getevents2.vb /r:System.Windows.Forms.dll /r:System.dll

#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
   {
      
      // Create a bitmask based on BindingFlags.
      BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public);
      Type^ myTypeEvent = System::Windows::Forms::Button::typeid;
      array<EventInfo^>^myEventsBindingFlags = myTypeEvent->GetEvents( myBindingFlags );
      Console::WriteLine( "\nThe events on the Button class with the specified BindingFlags are:" );
      for ( int index = 0; index < myEventsBindingFlags->Length; index++ )
      {
         Console::WriteLine( myEventsBindingFlags[ index ] );

      }
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

class EventsSample
{
    public static void Main()
    { 
        try
        {
            // Create a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public;  
            Type myTypeEvent = typeof(System.Windows.Forms.Button);
            EventInfo[] myEventsBindingFlags = myTypeEvent.GetEvents(myBindingFlags);
            Console.WriteLine("\nThe events on the Button class with the specified BindingFlags are:");
            for (int index = 0; index < myEventsBindingFlags.Length; index++)
            {
                Console.WriteLine(myEventsBindingFlags[index].ToString());
            }
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException:" + e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}
Imports System
Imports System.Reflection
Imports System.Security
Imports System.Windows.Forms
Imports Microsoft.VisualBasic

Class EventsSample

    Public Shared Sub Main()
        Try
            ' Create a bitmask based on BindingFlags.
            Dim myBindingFlags As BindingFlags = BindingFlags.Instance Or BindingFlags.Public
            Dim myTypeEvent As Type = GetType(System.Windows.Forms.Button)
            Dim myEventsBindingFlags As EventInfo() = myTypeEvent.GetEvents(myBindingFlags)
            Console.WriteLine(ControlChars.Cr + "The events on the Button class with the specified BindingFlags are:")
            Dim index As Integer
            For index = 0 To myEventsBindingFlags.Length - 1
                Console.WriteLine(myEventsBindingFlags(index).ToString())
            Next index
        Catch e As SecurityException
            Console.WriteLine("SecurityException:" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub 'Main
End Class 'EventsSample

Комментарии

GetEvents Метод не возвращает события в определенном порядке, такие как алфавитном или в порядке объявления.The GetEvents method does not return events in a particular order, such as alphabetical or declaration order. Ваш код не должен зависеть от порядка, в котором возвращаются события, так как этот порядок меняется.Your code must not depend on the order in which events are returned, because that order varies.

Следующие 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. Только защищенные и внутренние события базовых классов, возвращаются; Закрытые события базовых классов не возвращаются.Only protected and internal events on base classes are returned; private events on base classes are not returned.

  • Укажите 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.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 objects 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.

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

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