2010-09-02 9 views

Antwort

19

Ja, Sie könnten einen ähnlichen Effekt mit Ereignissen erreichen, wie Sie mit partiellen Methoden können. Partielle Methoden sind in Wirklichkeit nur eine Möglichkeit, Code-Generatoren, hauptsächlich Designer, dazu zu bringen, Hooks für den nicht generierten Code zu generieren. Ereignisse könnten diese Rolle ausfüllen.

Jedoch gibt es Vorteile für Teilverfahren über Ereignisse, insbesondere

  • Partial Methodenaufrufe aus dem erzeugten IL vollständig entfernt werden, wenn es keine Implementierung ist. Dies kann nicht mit Ereignissen durchgeführt werden.
  • Das Design der partiellen Methoden ist das Problem zu lösen, wo es 1 Anbieter des Hooks und 1 Consumer gibt. Ereignisse sollen 1 Anbieter mit N Verbrauchern modellieren und haben den Overhead, der mit einem solchen Design kommt
  • Es gibt keine Frage der Bestellung (wer zuerst geht). Bei Ereignissen müssen Sie sicherstellen, dass der Code, der das Ereignis abonniert, ausgeführt wird, bevor der vom Designer generierte Code das Ereignis ausgelöst hat. Dies ist nicht immer möglich, wenn der Designer beispielsweise einen Konstruktor generiert. Partielle Methoden haben kein solches Problem.
2

Sie sind nicht "benötigt", aber für große Anwendungen gewünscht. Umfangreiche Verwendung von Ereignissen führt zu dem Smart UI Anti-Pattern, bei dem die Geschäftslogik eng mit der Benutzeroberfläche verbunden ist, während Teilfunktionen es Ihnen ermöglichen, Ihre Probleme besser zu trennen.

Hier finden Sie auch einen Link zum MSDN C# -Programmierhandbuch für Teilmethoden. http://msdn.microsoft.com/en-us/library/wa80x488.aspx

2

Der Compiler wird Aufrufe von Teilmethoden entfernen, wenn keine Implementierungen vorhanden sind. Mit der Alternative von Ereignissen müssten Listener zur Laufzeit überprüft werden (sie müssten auch gespeichert werden, usw.). Dadurch können partielle Methoden leistungsfähiger werden, insbesondere wenn es viele mögliche "Ereignisse" gibt und nur wenige "Listener" registriert haben.

0

Partielle Methoden werden zur Kompilierzeit definiert, Ereignisse zur Laufzeit. Sie sind also verschiedene Dinge.

Teil Methoden wurden das Bild gebracht bestehende Klassen zu erweitern, dass Sie keine Kontrolle über (Teil des Rahmens oder automatisch generierte) haben

hoffte, das hilft

Verwandte Themen