Type.GetEvents Метод

Определение

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

Перегрузки

GetEvents()

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

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

Возвращает все открытые события, которые объявлены или унаследованы текущим объектом 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.Reflection
Imports System.Security

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

Комментарии

Событие считается открытым для отражения, если у него есть по крайней мере один из открытых методов или метода доступа.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. При скрытии по имени и сигнатуре учитываются все части сигнатуры, включая пользовательские модификаторы, возвращаемые типы, типы параметров, Sentinel и неуправляемые соглашения о вызовах.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, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу задания в базовом классе.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. Настраиваемые атрибуты не являются частью системы общих типов.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.

Если Current 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)

При переопределении в производном классе ищет события, которые объявлены или унаследованы текущим объектом 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

Побитовое сочетание значений перечисления, указывающих способ проведения поиска.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.Reflection
Imports System.Security
Imports System.Windows.Forms

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
End Class

Комментарии

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.

Если Current 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.

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

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