Laden...

Erweiterungsmethode zum Auslösen von Events

Erstellt von inflames2k vor 11 Jahren Letzter Beitrag vor 11 Jahren 3.729 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren
Erweiterungsmethode zum Auslösen von Events

Beschreibung:

Da beim Auslösen von Events immer wieder geprüft werden muss, ob dieses gebunden ist und ich es leid bin immer und immer wieder die Prüfung zu implementieren, habe ich kurzerhand eine Erweiterungsmethode dafür erstellt.

Diese macht im Grunde genommen nichts außer die Prüfung ob das Event gebunden ist und löst dieses anschließend aus.

Nun aber das Snippet für die Erweiterung:


public static class EventExtention
{
	/// <summary>
	/// Extensionmethod to invoke an event.
	/// </summary>
	/// <param name="sender">The sender of the event. Regulary this is the class calling the method.</param>
	/// <param name="eventDelegate">The event to call.</param>
	/// <param name="e">The event args</param>
	public static void InvokeEvent(this Object sender, Delegate eventDelegate, EventArgs e)
	{
		// check if the event is subscribed else there will be an exception on invokation
		if(eventDelegate != null)
		{
			// invoke the event
			eventDelegate.DynamicInvoke(new Object[] { sender, e });
		}
	}
}

Die Erweiterungsmethode kann von jeder Klasse aus aufgerufen werden, die Events auslösen soll. Im folgenden ein Verwendungsbeispiel:


public class MyClass
{
      private event EventHandler MyEvent;

      private void OnMyEvent()
      {
            this.InvokeEvent(MyEvent, EventArgs.Empty);
      }
}

Auch das verwenden eigener EventHandler und EventArgs funktioniert hierbei hervorragend.

Schlagwörter: Event invokation, Event auslösen, Events

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo inflames2k, Hallo zusammen,

siehe auch [Lösung] Problem mit EventHandler [==> fertige Code-Snippets]

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren

Ah verdammt, siehe Suchfunktion. 😃 - Aber als Alternative ist mein Snippet ja auch zu gebrauchen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |