Преобразовать VB.NET событие с несколькими аргументами события в C#
-
21-09-2019 - |
Вопрос
Я нахожусь в процессе переноса модульного теста, написанного на 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) {
...
}