2009-03-15 8 views
7

मैं ActiveXObject का उपयोग कर जावास्क्रिप्ट से सी # विधि को कॉल करने का प्रयास कर रहा हूं:सी # विधि से जावास्क्रिप्ट 'मूल' सरणी कैसे वापस करें?

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

आखिरकार, arr में SAFEARRAY ऑब्जेक्ट होगा, लेकिन JScript सरणी नहीं। क्या मूल जावास्क्रिप्ट ऑब्जेक्ट को सी # विधि से वापस करने का कोई तरीका है?

उत्तर

5

काम का हो सकता है मैं अपने आप को द्वारा समाधान नहीं मिला है, लेकिन कोई प्रलेखन इस भाग के लिए मौजूद है।

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]); 
+2

मैं इस से बहुत सावधान रहूंगा। यह काफी संभावना है कि एमएस आपको "जेस्क्रिप्ट" और ActiveX दिए गए xbrowser समस्याओं को सौंपने जा रहा है। JSON दृष्टिकोण अधिक लचीला और अधिक विश्वसनीय imho होने जा रहा है। – annakata

8

आप JSON स्ट्रिंग वापस कर सकते हैं और फिर जावास्क्रिप्ट ऑब्जेक्ट में पार्स कर सकते हैं। JSON में नेट वस्तुओं को क्रमानुसार करने उपलब्ध नेट पुस्तकालयों के एक नंबर और उपाध्यक्ष versa-

कुछ नाम हैं।

यह question and answer आप

+0

नहीं, यह मामला नहीं है। मुझे पता है कि इसी तरह संभव है और वास्तव में सी ++ का उपयोग करके मेरे सहयोगी द्वारा किया गया था, लेकिन मैं इससे परिचित नहीं हूं, इसलिए मैं जानना चाहता हूं कि मैं सी # का उपयोग करके इसे कैसे कर सकता हूं। –

0

वाया VBArray ऐसा काम कर सकते हैं समाधान निम्नलिखित तरीके से JScript.ArrayObject उपयोग करने के लिए है यह:

  1. सी # से वापसी वस्तु [] डिस्पिंटरफेस में घोषित करें)।

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

पृष्ठभूमि जानकारी:

0

आप कर सकते हैं return delimited Joined String सी # में के हस्ताक्षर करने के लिए टाइप करें और जावास्क्रिप्ट में विभाजित कर सकते हैं

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

//Javascript 
var arrstring = objActiveX.getArryString().split(','); 
संबंधित मुद्दे