Convertir caso VB.NET con múltiples argumentos del evento a C #
-
21-09-2019 - |
Pregunta
Estoy en el proceso de trasplantar una prueba de unidad escrita en VB.NET para el proyecto más amplio escrito en C #. Sin embargo, esta pequeña canción me ha buscando ayuda:
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
¿Cuál es la mejor manera de convertir este evento? Además, es este un buen ejemplo para usar EventHandler<>
para consolidar mis argumentos en una estructura?
Solución
En este caso, en realidad está demostrando un controlador de eventos frente a un evento. C # no tiene la noción de que la cláusula Handles
VB.NET tiene. En su lugar debe asignar manualmente un controlador de eventos para un evento de este modo:
myObject.DataChange += this.object_DataChange;
Y en consecuencia, cuando haya terminado con el evento debe quitar el controlador de este modo:
myObject.DataChange -= this.object_DataChange;
El controlador de eventos real puede ser traducido como sigue.
void object_DataChange(
int TransactionID,
int NumItems,
ref System.Array ClientHandles,
ref System.Array ItemValues,
ref System.Array Quantities,
ref System.Array TimeStamps) {
...
}