Feedback

C# - Event

Veröffentlicht von am 2/11/2008
(1 Bewertungen)
Deklaration eines Events.
Es sind nur += und -= offentlich zugänglich.
#region EventName: MyEvent
/// <summary>
/// <see cref="MyEvent"/>
/// </summary>
private event EventHandler<MyEventArgs> _MyEvent;
/// <summary>
/// ...
/// </summary>
public event EventHandler<MyEventArgs> MyEvent
{
 add { _MyEvent += value; }
 remove { _MyEvent -= value; }
}
/// <summary>
/// ...
/// </summary>
/// <param name="e">The event args
/// instance containing the event data.</param>
protected virtual void OnMyEvent(MyEventArgs e)
{
 try
 {
  if(_MyEvent != null)
  {
   _MyEvent(this, e);
  }
 }
 catch
 {
  //TODO: exception handling
  throw;
 }
}
#endregion
Abgelegt unter event, add, remove, EventHandler.

1 Kommentare zum Snippet

Ralf Patzig schrieb am 2/14/2008:
Gut ist der generische Ansatz für den EventHandler. Gut auch, daß das Auslösen des Event dem Entw.muster des .NET-Framework folgt. Folgendes als Anmerkung:
1. Es ist nicht nötig, ein event per add/remove-Kapselung zu veröffentlichen. Es sind von aussen de facto nur add und remove möglich, also reicht ein "public event EventHandler<T> TheEvent".
2. Die Methode zum Auslösen des Event kann noch bzgl. Multithreading verfeinert werden. Wird zw. dem Prüfen des event auf null und dem Auslösen des event selbiges durch Entziehen von Handlern auf null gezogen, dann gibt's eine Exception. Besser umgeht man das durch vorheriges Kopieren des Event:
EventHandler<T> handler = TheEvent;
if (handler != null)
{
handler(this, e);
}
 

Logge dich ein, um hier zu kommentieren!