Zdarzenia i wywołania zwrotne
Uwaga
Ta zawartość jest drukowana przez uprawnienie Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Wydanie to zostało opublikowane w 2008 roku, a książka została w pełni zmieniona w trzecim wydaniu. Niektóre informacje na tej stronie mogą być nieaktualne.
Wywołania zwrotne to punkty rozszerzalności, które umożliwiają platformie wywołanie z powrotem do kodu użytkownika za pośrednictwem delegata. Te delegaty są zwykle przekazywane do struktury za pośrednictwem parametru metody.
Zdarzenia są specjalnym przypadkiem wywołań zwrotnych, które obsługują wygodną i spójną składnię dostarczania delegata (program obsługi zdarzeń). Ponadto uzupełnianie instrukcji programu Visual Studio i projektanci zapewniają pomoc w korzystaniu z interfejsów API opartych na zdarzeniach. (Zobacz Projektowanie zdarzeń).
✔️ ROZWAŻ użycie wywołań zwrotnych, aby umożliwić użytkownikom udostępnianie niestandardowego kodu do wykonania przez platformę.
✔️ ROZWAŻ użycie zdarzeń, aby umożliwić użytkownikom dostosowanie zachowania struktury bez konieczności rozumienia projektu zorientowanego na obiekt.
✔️ Preferuj zdarzenia w przypadku zwykłych wywołań zwrotnych, ponieważ są one bardziej znane szerszemu zakresowi deweloperów i są zintegrowane z uzupełnianiem instrukcji programu Visual Studio.
❌ UNIKAJ używania wywołań zwrotnych w interfejsach API z uwzględnieniem wydajności.
✔️ W przypadku definiowania interfejsów API z wywołaniami zwrotnymi należy użyć nowych Func<...>
typów , Action<...>
lub Expression<...>
zamiast delegatów niestandardowych.
Func<...>
i Action<...>
reprezentują delegatów ogólnych. Expression<...>
reprezentuje definicje funkcji, które można skompilować, a następnie wywołać w czasie wykonywania, ale mogą być również serializowane i przekazywane do procesów zdalnych.
✔️ Zmierz i poznaj wpływ na wydajność korzystania z programu Expression<...>
, zamiast używać obiektów Func<...>
i Action<...>
delegatów.
Expression<...>
typy są w większości przypadków logicznie równoważne i Func<...>
Action<...>
delegatom. Główną różnicą między nimi jest to, że delegaty mają być używane w lokalnych scenariuszach procesów; Wyrażenia są przeznaczone dla przypadków, w których korzystne i możliwe jest obliczenie wyrażenia w procesie zdalnym lub maszynie.
✔️ Rozumiem, że wywołując delegata, wykonujesz dowolny kod i może to mieć wpływ na zabezpieczenia, poprawność i zgodność.
© Części 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.
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 w ramach Microsoft Windows Development Series.