Události a zpětná volání
Poznámka:
Tento obsah je znovu vytištěn oprávněním Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms a Patterns for Reusable .NET Libraries, 2. vydání. Tato edice byla publikována v roce 2008 a kniha byla od té doby plně upravena ve třetím vydání. Některé informace na této stránce můžou být zastaralé.
Zpětná volání jsou body rozšiřitelnosti, které umožňují rozhraní volat zpět do uživatelského kódu prostřednictvím delegáta. Tito delegáti se obvykle předávají rozhraní prostřednictvím parametru metody.
Události jsou zvláštní případ zpětného volání, které podporují pohodlnou a konzistentní syntaxi pro poskytování delegáta (obslužné rutiny události). Kromě toho dokončování příkazů a návrháři sady Visual Studio poskytují pomoc při používání rozhraní API založených na událostech. (Viz Návrh události.)
✔️ ZVAŽTE použití zpětného volání, které uživatelům umožní poskytovat vlastní kód, který má architektura spouštět.
✔️ ZVAŽTE použití událostí, které uživatelům umožňují přizpůsobit chování architektury bez nutnosti porozumět objektově orientovanému návrhu.
✔️ Upřednostňujte události před prostými zpětnými voláními, protože jsou lépe obeznámeni s širší škálou vývojářů a jsou integrovány s dokončováním příkazů sady Visual Studio.
❌ Vyhněte se použití zpětných volání v rozhraních API citlivých na výkon.
✔️ Při definování rozhraní API se zpětnými voláními používejte nové Func<...>
, Action<...>
nebo Expression<...>
typy namísto vlastních delegátů.
Func<...>
a Action<...>
představují obecné delegáty. Expression<...>
představuje definice funkcí, které lze kompilovat a následně vyvolat za běhu, ale lze je také serializovat a předávat vzdáleným procesům.
✔️ Změřte a porozumíte dopadům na výkon při používání Expression<...>
Func<...>
Action<...>
a delegátech.
Expression<...>
typy jsou ve většině případů logicky ekvivalentní Func<...>
a Action<...>
delegátům. Hlavní rozdíl mezi nimi spočívá v tom, že delegáti se mají používat ve scénářích místního procesu; výrazy jsou určeny pro případy, kdy je výhodné a je možné výraz vyhodnotit ve vzdáleném procesu nebo počítači.
✔️ Uvědomte si, že voláním delegáta spouštíte libovolný kód a může mít bezpečnostní, správnost a kompatibilitu.
© Části 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.
Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional v rámci Microsoft Windows Development Series.