Ereignisse und Rückrufe
Hinweis
Diese Inhalte wurden mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines nachgedruckt: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.
Rückrufe sind Erweiterungspunkte, mit denen ein Framework über einen Delegaten den Benutzercode aufrufen kann. Diese Delegaten werden in der Regel über einen Parameter einer Methode an das Framework übergeben.
Ereignisse sind ein Sonderfall von Rückrufen, die eine bequeme und konsistente Syntax für die Bereitstellung des Delegaten (eines Ereignishandlers) unterstützen. Außerdem bieten die Anweisungsvervollständigung von Visual Studio und Designer Hilfe bei der Verwendung ereignisbasierter APIs. (Siehe Ereignisentwurf.)
✔️ ERWÄGEN Sie die Verwendung von Rückrufen, damit Benutzer benutzerdefinierten Code bereitstellen können, der vom Framework ausgeführt wird.
✔️ ERWÄGEN Sie die Verwendung von Ereignissen, um Benutzern das Anpassen des Verhaltens eines Frameworks zu ermöglichen, ohne den objektorientierten Entwurf verstehen zu müssen.
✔️ BEVORZUGEN Sie Ereignisse vor einfachen Rückrufen, weil sie einer breiteren Palette von Entwicklern vertraut sind und in die Anweisungsvervollständigung von Visual Studio integriert sind.
❌ VERMEIDEN Sie die Verwendung von Rückrufen in leistungssensiblen APIs.
✔️ VERWENDEN Sie die neuen Func<...>
-, Action<...>
- oder Expression<...>
-Typen anstelle von benutzerdefinierten Delegaten, wenn Sie APIs mit Rückrufen definieren.
Func<...>
und Action<...>
stellen generische Delegaten dar. Expression<...>
stellt Funktionsdefinitionen dar, die kompiliert und anschließend zur Laufzeit aufgerufen werden können, aber auch serialisiert und an Remoteprozesse übergeben werden können.
✔️ MESSEN und VERSTEHEN Sie die Auswirkungen auf die Leistung, wenn Sie Expression<...>
anstelle von Func<...>
- und Action<...>
-Delegaten verwenden.
Expression<...>
-Typen sind in den meisten Fällen logisch äquivalent zu Func<...>
- und Action<...>
-Delegaten. Der Hauptunterschied zwischen ihnen besteht darin, dass die Delegaten für die Verwendung in lokalen Prozessszenarien vorgesehen sind. Ausdrücke sind für Fälle vorgesehen, in denen es vorteilhaft und möglich ist, den Ausdruck in einem Remoteprozess oder -computer auszuwerten.
✔️ VERSTEHEN Sie, dass Sie durch den Aufruf eines Delegaten beliebigen Code ausführen und dass dies Auswirkungen auf die Sicherheit, Richtigkeit und Kompatibilität haben kann.
Teile ©2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.
Nachdruck mit Genehmigung von Pearson Education, Inc aus Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.