1

我在 C# 中创建了一个 Com 组件并尝试在 Javascript 中访问。

我的 C# 方法是

Class myComComponent
{
    private int[] nAllData;    
    public int[] GetArray(int index)
            {
              //Some Logic here that will return integer type of array{1,12,15,48,1452,45}
                return nAllData;
            }
}

从 javascript 调用它,但它给了我一个类型不匹配的错误。

Javascript代码

 function MyComComponent_onload() {
           try {
               var nAllData = new Array();
               for (var i = 0; i<= 5; i++)
                   {
                        nAllData.push(myComComponent.GetArray(i));
                     }
                }
                catch (err) 
                {
                    alert(err.message);
                }
            }
    <html>
    <head>
 <object id="myComComponent" name="myComComponent" classid="clsid:4794D615-BE51-4A1E-B1BA-453F6E9337C4">
    </head>
    <body onload="MyComComponent_onload();">
    //// Html Code goes here
    </body>
    <html>
4

1 回答 1

1

JavaScript 只能使用 COM 的自动化兼容子集。整数数组不是该子集的一部分。

您需要返回 VARIANT 的 SAFEARRAY 以与 JavaScript 兼容,或者返回具有 IEnumVariant 接口的对象(因此 foreach 有效),以及带有索引默认属性的 IDispatch (因此使用方括号进行索引有效)。

于 2013-08-13T11:36:24.870 回答