![](/img/trans.png)
[英]What is the proper way to fire an ASP.NET control event programatically?
[英]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.