Converta o evento vb.net com vários argumentos de evento para C#
-
21-09-2019 - |
Pergunta
Estou no processo de transplante de um teste de unidade escrito em vb.net para o projeto maior escrito em C#. No entanto, esse pequeno cantor me faz procurar ajuda:
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
Qual é a melhor maneira de converter este evento? Além disso, é uma boa instância para usar EventHandler<>
Para consolidar meus argumentos em uma estrutura?
Solução
Nesse caso, você está realmente demonstrando um manipulador de eventos vs. um evento. C# não tem o Handles
noção de cláusula isso Vb.net tem. Em vez disso, você deve atribuir manualmente um manipulador de eventos a um evento como assim:
myObject.DataChange += this.object_DataChange;
E correspondentemente, quando terminar o evento, você deve remover o manipulador como assim:
myObject.DataChange -= this.object_DataChange;
O manipulador de eventos real pode ser traduzido da seguinte maneira.
void object_DataChange(
int TransactionID,
int NumItems,
ref System.Array ClientHandles,
ref System.Array ItemValues,
ref System.Array Quantities,
ref System.Array TimeStamps) {
...
}