我正在编写一个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(该对象将捕获自己的事件)?我也不喜欢(听起来更糟)。
有没有更好的方法来设计/支持这个?
答案 0 :(得分:2)
使用C#6 null-conditional operator,您可以写:
OnMapClick?.Invoke(this, new WebMercatorCoordinates(lat, lng));