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?

Foi útil?

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) {
    ...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top