Конвертировать событие VB.NET с несколькими аргументами события в 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
Как лучше всего конвертировать это событие? Кроме того, это хороший пример для использования EventHandler<>
объединить мои аргументы в структуру?
1 ответ
Решение
В этом случае вы фактически демонстрируете обработчик события против события. 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) {
...
}