使用COM将C#中的数组返回给经典ASP

4
我正在尝试使用com将c#中的数组返回到classic asp。这篇帖子帮了我很多忙,但我仍然有问题:
我在c#中有以下方法:
public object[] returnStuff () {
    return new object[] {'1','2','3'};
}

我的经典 ASP:
dim responseArray1

responseArray1 = RegusSoapComponent.returnStuff()

response.write("Type of Array one is " & VarType(responseArray1))
response.write("Type of Array one is " & responseArray1(1))

我的输出是:
response is Type of Array one is 8204

这是一条微软 VBScript 运行时错误信息,说明该变量使用了 VBScript 不支持的自动化类型。无论我怎么做,似乎都无法访问该变量。

尝试返回新对象[3] {'1','2','3'};? - Gage
@Gage:这在运行时不会有任何区别。 - SLaks
@SLaks,我认为它也不会,但那是我在他发布的示例和他的代码之间看到的唯一区别。 - Gage
@IKode “另一方面,数组函数总是创建一个Variant类型的数组-VarType 8204(即8192加12)。” 取自此页面http://www.brainbell.com/tutors/Visual_Basic/Arrays.htm。因此,您正在创建一个变量数组。返回的数组长度是多少? - Gage
1
如果您尝试返回字符串数组会怎样呢?return new object[] {"1", "2", "3"}; 也许由于某些原因,char类型会引起问题。 - Shadow The Spring Wizard
1个回答

5

VBScript喜欢接收包含变量数组的variant。因此,您需要返回一个包装对象来包含您的对象数组。例如:

public object returnStuff() {
    return new object[] {'1','2','3'};
}

应该以正确的方式进行编组。有关详细版本,请参见先前的答案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接