Pergunta

Eu estou tentando chamar um método C # de JavaScript usando ActiveXObject:

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

Por fim, arr irá conter um objeto SAFEARRAY, mas não variedade JScript. Existe alguma maneira para retornar objeto JavaScript nativa a partir de um método C #?

Foi útil?

Solução 2

Eu encontrei a solução por mim, mas não existe documentação para esta parte. A solução é usar JScript.ArrayObject da seguinte maneira:

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);

Depois que você vai ser capaz de usar a matriz _lastField em JavaScript como uma matriz nativa:

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

Outras dicas

Você pode retorno delimitado Cadastrado Cordas em C # e pode se dividir em JavaScript

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

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

Via VBArray pode funcionar assim:

  1. Voltar objeto [] a partir de C # (declarar isso no dispinterface).

  2. Para obter uma matriz JS nativa em JScript uso VBArray:

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

Informações gerais:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top