如何知道一个事件有什么样的论点

本文关键字:什么样 事件 一个 何知道 | 更新日期: 2023-09-27 18:20:58

我有一个事件,我将处理程序与之关联。当我编写处理程序方法时,我如何知道函数接受哪些参数?

示例:

    // 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和所有帧就绪参数?

如何知道一个事件有什么样的论点

您可以查找该事件的文档。它将指定哪个委托定义该事件。然后,您可以查找该委托的文档,以查看函数的签名必须是什么才能匹配该委托。

或者,你可以依靠Visual Studio来告诉你,而不是像大多数人那样查找它。(将鼠标悬停在事件上会告诉你委托必须是什么,或者在键盘上键入SomeEvent +=会提示你选择创建一个具有正确签名的事件处理程序的新存根。)

请注意,参数的名称是不相关的(使用任何您想要的),只有类型才重要。

在Visual Studio中手动执行此操作的方法是键入this.sensor.ColorFrameReady +=,然后按Tab键两次以查看默认实现是什么。对于要查看其签名的任何其他事件/委托,请执行类似的操作。

这样做不需要您拥有事件和委托的源代码(您可能没有)。

在我多年的C#编程生涯中,我从未找到过更好的方法来实现这一点。(我实际上还没有寻找解决方案,但没有任何明显的解决方案。)

在Visual Studio中:右键单击事件名称->转到定义。这将带您参加活动。右键单击处理程序类名->转到定义。这将带您进入委托的定义,它将为您提供方法签名。

这可能略微取决于您的Visual Studio设置。

事件具有委托类型。委托类型定义处理程序方法的签名。因此,查找事件委托类型,就会找到所需的签名。