سؤال

أنا بصدد زرع اختبار الوحدة المكتوبة في 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<> لتوحيد حججاتي في هيكل؟

هل كانت مفيدة؟

المحلول

في هذه الحالة ، أنت تُظهر فعليًا معالج الأحداث مقابل حدث. ج# ليس لديه 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