簡體   English   中英

將事件添加到控件庫的正確方法

[英]Proper way to add event to control library

我正在編寫Winforms控件,該控件包裝了JS庫並擴展了Web瀏覽器控件。

當JS庫調用一個事件時,我有一個C#中的方法的回調,該方法解析返回的JSON等。在該方法的結尾,我想使用從JS返回的數據來觸發一個事件。

我正在執行以下操作:

public event EventHandler<WebMercatorCoordinates> OnMapClick;
public void JavascriptCallbackReceiver(String message)
        {
           //I'm parsing the string here
           if (OnMapClick != null)
                this.OnMapClick(this, new WebMercatorCoordinates(lat, lng));
        }

我不喜歡這種空檢查。 如果用戶尚未將自己的處理程序添加到EventHandler<WebMercatorCoordinates> OnMapClick ,則必須進行檢查,以免調用空委托。

我是否應該在類的構造函數中向事件添加處理程序,以使其永遠不會為null(對象將捕獲其自己的事件)? 我也不喜歡(聽起來更糟)。

有沒有更好的方法來設計/寫這個呢?

使用C#6 空條件運算符,您可以編寫:

OnMapClick?.Invoke(this, new WebMercatorCoordinates(lat, lng));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM