0

これは私の C# コードです 私のGetChannelSample()メソッドreturn an int[] arrayこの配列に JavaScript でアクセスしたいのですが、その方法がわかりません。

[Guid("4794D615-BE51-4a1e-B1BA-453F6E9337C4")] 
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
class Test:IComOjbect
{
            private int[] nAllData;
            public int[] GetChannelSample(int channelIndex)
            {
             //Some Logic here that will return integer type of array{1,12,15,48,1452,45,100,01}
              return nAllData;
            }
}

[Guid("4B3AE7D8-FB6A-4558-8A96-BF82B54F329C")]
[ComVisible(true)]
public interface IComOjbect
 {
    [DispId(0x10000008)]
    int[] GetChannelSample(int channelIndex);
 }

このために、Gacutil と Regasm コマンドを使用して COM コンポーネントを作成し、com コンポーネントが javascript で簡単にアクセスできるようにしましたが、C# メソッドが int[] 配列を返す場合に戻り、javascript 配列を使用してアクセスする方法がわかりません。

4

1 に答える 1

0

これがある種のハンドラーである場合、結果を JSON にシリアル化し、クライアントで逆シリアル化できます。

JSON.NET の使用

string json = JsonConvert.SerializeObject(GetChannelSample(channelIndex));
this.Context.Response.ContentType = "text/plain";
this.currentContext.Response.Write(json);

またはJavascriptシリアライザー

JavascriptSerializer ser = new JavaScriptSerializer();
string json = ser.Serialize(GetChannelSample(channelIndex));
this.Context.Response.ContentType = "text/plain";
this.currentContext.Response.Write(json);

クライアントで:

function onAjaxSuccess (data){
    var myArr = JSON.parse(data);
}
于 2013-08-13T12:59:50.880 に答える