Udostępnij za pośrednictwem


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.

Zobacz też