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# 方法 retrn 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 回答