将具有多个事件参数的VB.NET事件转换为C#

Gre*_*ler 1 c# vb.net events event-handling vb.net-to-c#

我正在将用VB.NET编写的单元测试移植到用C#编写的大型项目中.然而,这个小曲子让我寻求帮助:

Public Sub object_DataChange(ByVal TransactionID As Integer, _
                             ByVal NumItems As Integer, _
                             ByRef ClientHandles As System.Array, _
                             ByRef ItemValues As System.Array, _
                             ByRef Qualities As System.Array, _
                             ByRef TimeStamps As System.Array) _
                             Handles myObject.DataChange

    '' Does event code here
End Sub
Run Code Online (Sandbox Code Playgroud)

转换此活动的最佳方式是什么?此外,这是一个很好的实例,用于EventHandler<>将我的参数合并到一个结构中吗?

Jar*_*Par 5

在这种情况下,您实际上是在演示事件处理程序与事件.C#没有VB.NETHandles子句概念.相反,您必须手动将事件处理程序分配给事件,如下所示:

myObject.DataChange += this.object_DataChange;
Run Code Online (Sandbox Code Playgroud)

相应地,当你完成事件后,你应该删除处理程序,如下所示:

myObject.DataChange -= this.object_DataChange;
Run Code Online (Sandbox Code Playgroud)

实际的事件处理程序可以翻译如下.

void object_DataChange(
    int TransactionID,
    int NumItems,
    ref System.Array ClientHandles,
    ref System.Array ItemValues,
    ref System.Array Quantities,
    ref System.Array TimeStamps) {
    ...
}
Run Code Online (Sandbox Code Playgroud)