次の方法で共有


イベントとコールバック

このコンテンツは、 フレームワーク設計ガイドライン (再利用可能な .NET ライブラリの規則、イディオム、パターン、第 2 版) から、Pearson Education, Inc. のアクセス許可によって再印刷されます。 そのエディションは2008年に出版され、その後 、本は第3版で完全に改訂されています。 このページの情報の一部が古くなっている可能性があります。

コールバックは、フレームワークがデリゲートを介してユーザー コードにコールバックできるようにする拡張ポイントです。 これらのデリゲートは、通常、メソッドのパラメーターを使用してフレームワークに渡されます。

イベントは、デリゲート (イベント ハンドラー) を提供するための便利で一貫性のある構文をサポートするコールバックの特殊なケースです。 さらに、Visual Studio のステートメント補完とデザイナーは、イベント ベースの API の使用に関するヘルプを提供します。 ( イベントの設計を参照)。

✔️ コールバックを使用して、ユーザーがフレームワークによって実行されるカスタム コードを提供することを検討してください。

✔️ イベントを使用して、ユーザーがオブジェクト指向の設計を理解しなくてもフレームワークの動作をカスタマイズすることを検討してください。

✔️ イベントは、より広範な開発者になじみがあり、Visual Studio ステートメントの完了と統合されているため、プレーンコールバックよりもイベントを優先します。

❌ パフォーマンスに依存する API でコールバックを使用しないようにします。

✔️ コールバックを使用して API を定義するときは、カスタム デリゲートの代わりに新しい Func<...>Action<...>、または Expression<...> 型を使用してください。

Func<...> および Action<...> は汎用デリゲートを表します。 Expression<...> は、コンパイルして実行時に呼び出すことができる関数定義を表しますが、シリアル化してリモート プロセスに渡すこともできます。

✔️ Expression<...>Func<...>デリゲートを使用する代わりに、Action<...>を使用した場合のパフォーマンスへの影響を測定して理解します。

Expression<...> ほとんどの場合、型は Func<...> および Action<...> デリゲートと論理的に等しくなります。 それらの主な違いは、デリゲートがローカル プロセスシナリオで使用されることを意図していることです。式は、リモート プロセスまたはコンピューターで式を評価することが有益であり、可能な場合を対象としています。

✔️ デリゲートを呼び出すことで、任意のコードを実行し、セキュリティ、正確性、互換性の低下が発生する可能性があることを理解してください。

Portions © 2005, 2009 Microsoft Corporation. 無断転載を禁じます。

フレームワーク設計ガイドライン:再利用可能な .NET ライブラリの規則、イディオム、パターン、Krzysztof Cwalina および Brad Abrams による第 2 版は、2008 年 10 月 22 日に Microsoft Windows 開発シリーズの一部として Addison-Wesley Professional によって公開されました。

こちらも参照ください