我有一个 .Net 组件,它有一个 COM 可见类和一个返回 System.Array 的方法。在后台,它返回一个字符串数组,但返回类型声明为 System.Array。不要问我“为什么”,我知道我可以将返回类型声明为 string[],这很好,但我的问题是特别是当它返回 System.Array 时。因此,为简单起见,.Net 方法如下:
public Array GetData()
{
return new string[] { };
}
然后在 VB6 项目中,无论我如何尝试,我都无法将数组元素作为字符串访问和遍历。下面是我的 VB6 代码片段,它不起作用:
Dim objRetVal As Object
Dim resData As Variant
Dim strData As String
Set objRetVal = NetClassInstance.GetData()
For Each resData In objRetVal
strData = CStr(resData)
MsgBox "strData = " & strData
Next
上面的 NetClassInstance 是我的 .Net 组件中 COM Visible .Net 类的一个实例。所以,它总是失败,它不可能将 System.Array 编组为 VB6 的字符串数组,我可以循环和访问数组中的字符串。请注意,objRetVal 不是 Nothing 也不是空的,它有数据,只是 resData 不读取数组中的字符串值。
我知道如果我从我的 .Net 方法返回字符串数组,那么它很可能会在 VB6 端工作,但我想知道是否有办法进行正确的编组并将返回的 System.Array 转换为 string() 数组VB6侧。