2017-09-15 42 views
0

我試圖創建一個USB控制器類,只是試圖暴露我的內部EventArrivedEventHandlerManagementEventWatcher允許消費者做一些事情,如果檢測到USB。EventArrivedEventHandler和EventHandler的區別?

我本來希望能夠將EventArrivedEventHandler投射到EventHandler,因爲它們都只是代表......但顯然不是。

這是不可能的原因嗎?

編輯:我發現了一種方法,可以讓我做非常乾淨的工作。

_watcher.EventArrived += (sender, eventArgs) => DeviceDetected?.Invoke(null, null); 

回答

1

之所以這樣是不可能的是,EventArraivedEventHandlerEventHandler有不同的簽名。如您所見,EventArrivedEventHandler作爲第二個參數EventArrivedEventArgs而不是EventArgs,因爲EventHandler

public delegate void EventArrivedEventHandler(object sender, EventArrivedEventArgs e) 

從理論上講,應該有可能將其轉換爲EventHandler<EventArrivedEventArgs>

有關此問題的詳細信息,請訪問MSDN頁面EventArivedEventHandlerEventArrivedEventArgs

0
public event EventHandler DriveDetected; 

private void workaround(object sender, EventArrivedEventArgs e) 
{ 
    DriveDetected?.Invoke(sender, e as EventArgs); 
} 

watcher.EventArrived += new EventArrivedEventHandler(workaround); 

根據您的文章。乾杯。