我有一个事件,我将我的处理程序与它关联起来。当我编写处理程序方法时,如何知道函数采用哪些参数?
示例:
// Add an event handler to be called whenever there is new color frame data
this.sensor.ColorFrameReady += this.SensorColorFrameReady;
this.sensor.AllFramesReady += this.AllFramesReady;
//handler
private void AllFramesReady(object sender, AllFramesReadyEventArgs allFramesReadyEventArgs)
{
throw new NotImplementedException();
}
我怎么知道我的函数的参数是object sender
并且所有帧都准备好了args?
答案 0 :(得分:6)
您查找该事件的文档。它将指定委托定义该事件的内容。然后,您可以查找该委托的文档,以查看函数的签名必须与委托匹配。
或者你可以依靠Visual Studio告诉你而不是查找它,这是大多数人所做的。 (将鼠标悬停在事件上会告诉您委托必须是什么,或者在键盘中键入SomeEvent +=
会提示您创建一个具有正确签名的事件处理程序的新存根。)
请注意,参数的名称是无关紧要的(使用您想要的任何内容),只有类型很重要。
答案 1 :(得分:4)
在Visual Studio中手动执行此操作的方法是键入this.sensor.ColorFrameReady +=
,然后按两次Tab键以查看默认实现是什么。对于您想要查看签名的任何其他事件/代理,请执行此操作。
这样做并不要求您拥有事件和委托的源代码(您可能没有)。
在我多年的C#编码中,我从未真正找到过更好的方法。 (我实际上并没有看找到解决方案,但没有任何明显的解决方案。)
答案 2 :(得分:1)
在Visual Studio中:右键单击事件名称 - >转到定义。这将带您参加活动。右键单击处理程序类名称 - >转到定义。这将带您进入委托的定义,它为您提供方法签名。
这可能略微取决于您的Visual Studio设置。
答案 3 :(得分:1)
事件具有委托类型。委托类型定义处理程序方法的签名。因此,查找事件委托类型,您将找到所需的签名。