首頁 > 後端開發 > C++ > 我們如何在 C# 中建立一個通用的「FromEvent」方法來處理任何類型和參數清單的事件?

我們如何在 C# 中建立一個通用的「FromEvent」方法來處理任何類型和參數清單的事件?

Patricia Arquette
發布: 2024-12-28 05:00:10
原創
113 人瀏覽過

How Can We Create a Generic `FromEvent` Method for Handling Events of Any Type and Parameter List in C#?

不指定委託類型的通用FromEvent 方法

問題陳述:

目前,基於事件建立任務需要為每個事件中的每個事件定義自訂的FromEvent 方法班級。這可能會變得麻煩且重複。目標是開發一個通用的 FromEvent 方法,可以處理任何物件上的任何事件。

挑戰:

遇到的主要挑戰是:

  • 在程式碼中將事件當作字串(例如「OnCompletion」)傳遞只會因事件而引發錯誤可在= 或-= 運算子的左側存取。
  • 事件的委託在運行時未知,需要變化。
  • 發出 IL 以設定事件的結果TaskCompletionSource 是動態的。

解決方案:

綜合解決方案涉及:

  1. 動態方法建立:
  2. Reflection: 使用反射檢索事件的 EventHandlerType 屬性並建立委託來自發出的 DynamicMethod。
  3. 取代通用類型: 利用TaskFromEvent 擴充方法,而不是手動指定委託類型(例如,TaskFromEvent),如下程式碼所示:
此方法支援任何傳回類型和參數的事件清單。它消除了對樣板程式碼的需要,並允許無縫且可重複使用地處理來自各種物件的事件。

以上是我們如何在 C# 中建立一個通用的「FromEvent」方法來處理任何類型和參數清單的事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板