كيفية إرجاع JavaScript 'الأصلية' مجموعة من C# الطريقة ؟

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

سؤال

أنا أحاول أن أتصل C# طريقة من جافا سكريبت باستخدام ActiveXObject:

var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();

في نهاية المطاف ، arr سوف تحتوي على SAFEARRAY كائن ، ولكن ليس JScript الصفيف.هل هناك أي طريقة للعودة الأم كائن جافا سكريبت من C# الطريقة ؟

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

المحلول 2

ولقد وجدت الحل بنفسي، ولكن عدم وجود وثائق لهذا الجزء. الحل هو استخدام JScript.ArrayObject على النحو التالي:

ArrayObject _lastField;
byte[] byteArray = new byte[]{2,1,2,3};
object[] array = new object[byteArray.Length];
byteArray.CopyTo(array, 0);
_lastField = Microsoft.JScript.GlobalObject.Array.ConstructArray(array);

وبعد ذلك سوف تكون قادرة على استخدام مجموعة _lastField في جافا سكريبت مثل مجموعة الأم:

var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);

نصائح أخرى

يمكنك العودة سلمان سلسلة ثم تحليل إلى كائن جافا سكريبت.هناك عدد من .صافي المكتبات المتاحة على تسلسل .صافي الكائنات إلى سلمان والعكس بالعكس-

إلى اسم قليلة.

هذا سؤال وجواب قد تكون ذات فائدة لك

عودة فواصل اشترك في سلسلة في C #، ويمكن تقسيمها إلى تفعيل جافا

//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}

//Javascript
var arrstring = objActiveX.getArryString().split(',');

Via لذلك ، لن تتم مناقشة أنها يمكن أن تعمل مثل هذا:

  1. عودة وجوه[] من C# (تعلن حتى في dispinterface).

  2. للحصول على مواليد شبيبة مجموعة في JScript استخدام لذلك ، لن تتم مناقشة:

    var jsArray = new VBArray(myobj.GetArray()).toArray();
    for (i = 0; i < jsArray.length; i++) 
    {
       // use jsArray[i]
    }
    

معلومات أساسية:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top