Преобразовать VB.NET событие с несколькими аргументами события в C#

StackOverflow https://stackoverflow.com/questions/1563208

Вопрос

Я нахожусь в процессе переноса модульного теста, написанного на 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

Каков наилучший способ преобразовать это событие?Кроме того, является ли этот экземпляр хорошим для использования EventHandler<> чтобы объединить мои аргументы в структуру?

Это было полезно?

Решение

В этом случае вы фактически демонстрируете обработчик событий по сравнениюсобытие.C # не имеет Handles понятие клаузулы , которое VB.NET имеет.Вместо этого вы должны вручную назначить обработчик события для события, подобного этому:

myObject.DataChange += this.object_DataChange;

И соответственно, когда вы закончите с событием, вы должны удалить обработчик следующим образом:

myObject.DataChange -= this.object_DataChange;

Фактический обработчик события может быть переведен следующим образом.

void object_DataChange(
    int TransactionID,
    int NumItems,
    ref System.Array ClientHandles,
    ref System.Array ItemValues,
    ref System.Array Quantities,
    ref System.Array TimeStamps) {
    ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top