Type.GetEvents Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli Typetarafından bildirilen veya devralınan olayları alır.
Aşırı Yüklemeler
GetEvents() |
Geçerli Typetarafından bildirilen veya devralınan tüm genel olayları döndürür. |
GetEvents(BindingFlags) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bağlama kısıtlamalarını kullanarak geçerli Typetarafından bildirilen veya devralınan olayları arar. |
GetEvents()
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Geçerli Typetarafından bildirilen veya devralınan tüm genel olayları döndürür.
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()
Döndürülenler
Geçerli Typetarafından bildirilen veya devralınan tüm genel olayları temsil eden bir nesne dizisiEventInfo.
-veya-
Geçerlide Type ortak olaylar yoksa, türünde EventInfoboş bir dizi.
Uygulamalar
Örnekler
Aşağıdaki örnek bir nesne dizisi EventInfo alır, bir Button
sınıfın tüm olaylarını alır ve olay adlarını görüntüler. Visual Basic örneğini derlemek için aşağıdaki komut satırını kullanın:
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);
}
}
}
open System
open System.Reflection
open System.Security
try
// Creates a bitmask based on BindingFlags.
let myBindingFlags = BindingFlags.Instance ||| BindingFlags.Public
let myTypeEvent = typeof<System.Windows.Forms.Button>
let myEventsBindingFlags = myTypeEvent.GetEvents myBindingFlags
printfn "\nThe events on the Button class with the specified BindingFlags are : "
for flag in myEventsBindingFlags do
printfn $"{flag}"
with
| :? SecurityException as e ->
printfn $"SecurityException: {e.Message}"
| :? ArgumentNullException as e ->
printfn $"ArgumentNullException: {e.Message}"
| e ->
printfn $"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
Açıklamalar
Bir olay genel özellikli en az bir yöntem veya erişimci içeriyorsa, yansıma için genel sayılır. Aksi takdirde olay özel olarak kabul edilir ve bunu almak için kullanmanız BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static gerekir (Visual Basic'te kullanarak değerleri Or
birleştirin).
.NET 6 ve önceki sürümlerinde yöntemi, GetEvents alfabetik veya bildirim sırası gibi belirli bir sırayla olayları döndürmez. Kodunuz olayların döndürülme sırasına bağlı olmamalıdır, çünkü bu sıra değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Bu yöntem türetilmiş bir sınıf tarafından geçersiz kılınabilir.
Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından Get
döndürülen temel sınıfın üyeleri gösterilmektedir.
Üye Türü | Statik | Statik Olmayan |
---|---|---|
Oluşturucu | Hayır | Hayır |
Alan | Hayır | Evet. Bir alan her zaman "ada ve imzaya göre gizle" özelliğindedir. |
Olay | Uygulanamaz | Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın. |
Yöntem | Hayır | Evet. Bir yöntem (sanal ve sanal olmayan) "ada göre gizle" veya "ada ve imzaya göre gizle" özelliğinde olabilir. |
İç İçe Tür | Hayır | Hayır |
Özellik | Uygulanamaz | Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın. |
"Ada ve imzaya göre gizle" özelliği, imzanın tüm parçalarını (özel değiştiriciler, dönüş türleri, parametre türleri, başlangıç/bitiş simgeleri ve yönetilmeyen çağrı kuralları dahil) dikkate alır. Bu ikili bir karşılaştırmadır.
Yansıma için, özellikler ve olaylar "ada ve imzaya göre gizle" özelliğindedir. Bu temel sınıfta hem alma hem de ayarlama erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir alma erişimcisi varsa, türetilen sınıf özelliği temel sınıf özelliğini gizler ve siz de temel sınıfta ayarlayıcıya erişemezsiniz.
Özel öznitelikler ortak tür sisteminin parçası değildir.
Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem nesneleri, uygun tür bağımsız değişkenleriyle değiştirilen tür parametreleriyle döndürür EventInfo .
Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının olaylarını arar.
Ayrıca bkz.
Şunlara uygulanır
GetEvents(BindingFlags)
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bağlama kısıtlamalarını kullanarak geçerli Typetarafından bildirilen veya devralınan olayları arar.
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()
Parametreler
- bindingAttr
- BindingFlags
Aramanın nasıl yürütüleceğini belirten numaralandırma değerlerinin bit düzeyinde birleşimi.
-veya-
Default boş bir dizi döndürmek için.
Döndürülenler
Belirtilen bağlama kısıtlamalarıyla eşleşen geçerli Type tarafından bildirilen veya devralınan tüm olayları temsil eden bir nesne dizisiEventInfo.
-veya-
Geçerlide Type olaylar yoksa veya hiçbir olay bağlama kısıtlamalarıyla eşleşmiyorsa, türünde EventInfoboş bir dizi.
Uygulamalar
Örnekler
Aşağıdaki örnek, belirtilen bağlama bayraklarıyla eşleşen bir nesne dizisi EventInfo alır, bir Button
sınıfın tüm olaylarını alır ve olay adlarını görüntüler. Visual Basic örneğini derlemek için aşağıdaki komut satırını kullanın:
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);
}
}
}
open System
open System.Reflection
open System.Security
try
// Creates a bitmask based on BindingFlags.
let myBindingFlags = BindingFlags.Instance ||| BindingFlags.Public
let myTypeEvent = typeof<System.Windows.Forms.Button>
let myEventsBindingFlags = myTypeEvent.GetEvents myBindingFlags
printfn "\nThe events on the Button class with the specified BindingFlags are : "
for flag in myEventsBindingFlags do
printfn $"{flag}"
with
| :? SecurityException as e ->
printfn $"SecurityException: {e.Message}"
| :? ArgumentNullException as e ->
printfn $"ArgumentNullException: {e.Message}"
| e ->
printfn $"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
Açıklamalar
.NET 6 ve önceki sürümlerinde yöntemi, GetEvents alfabetik veya bildirim sırası gibi belirli bir sırayla olayları döndürmez. Kodunuz olayların döndürülme sırasına bağlı olmamalıdır, çünkü bu sıra değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi olayların dahil edilebileceğini tanımlamak için kullanılabilir:
İade almak için veya
BindingFlags.Static
belirtmelisinizBindingFlags.Instance
.Genel olayları aramaya dahil etmek için belirtin
BindingFlags.Public
.Genel olmayan olayları (özel, iç ve korumalı olaylar) aramaya dahil etmek için belirtin
BindingFlags.NonPublic
. Yalnızca temel sınıflardaki korumalı ve iç olaylar döndürülür; temel sınıflardaki özel olaylar döndürülmüyor.Hiyerarşiye eklenecek
public
veprotected
statik üyeleri belirtinBindingFlags.FlattenHierarchy
;private
devralınan sınıflardaki statik üyeler dahil değildir.
Aramanın çalışma şeklini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:
-
BindingFlags.DeclaredOnly
yalnızca üzerinde Typebildirilen olayları aramak için yalnızca devralınan olayları aramaz.
Daha fazla bilgi edinmek için bkz. System.Reflection.BindingFlags.
Bir olay genel özellikli en az bir yöntem veya erişimci içeriyorsa, yansıma için genel sayılır. Aksi takdirde olay özel olarak kabul edilir ve bunu almak için kullanmanız BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static gerekir (Visual Basic'te kullanarak değerleri Or
birleştirin).
Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem nesneleri, uygun tür bağımsız değişkenleriyle değiştirilen tür parametreleriyle döndürür EventInfo .
Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının olaylarını arar.