我尝试创建USB控制器类,并尝试从EventArrivedEventHandler
公开我的内部ManagementEventWatcher
以允许消费者在检测到USB时执行某些操作。
我本来希望能够将EventArrivedEventHandler转换为EventHandler,因为它们都只是委托......但显然不是。
这是不可能的?
编辑:我找到了一种让我能干得很干净的方法。_watcher.EventArrived += (sender, eventArgs) => DeviceDetected?.Invoke(null, null);
答案 0 :(得分:1)
无法实现此目的的原因是EventArraivedEventHandler
和EventHandler
具有不同的签名。正如您所看到的,EventArrivedEventHandler
将第EventArrivedEventArgs
视为EventArgs
而不是EventHandler
视为public delegate void EventArrivedEventHandler(object sender, EventArrivedEventArgs e)
。
EventHandler<EventArrivedEventArgs>
理论上应该可以将其转换为taxi.mileage
。
访问EventArivedEventHandler和EventArrivedEventArgs的MSDN页面,了解有关此问题的详细信息。
答案 1 :(得分:0)
public event EventHandler DriveDetected;
private void workaround(object sender, EventArrivedEventArgs e)
{
DriveDetected?.Invoke(sender, e as EventArgs);
}
watcher.EventArrived += new EventArrivedEventHandler(workaround);
根据你的帖子。欢呼声。