从函数返回中分配自定义类型的数组

时间:2013-05-14 14:36:18

标签: c# dll vb6

我构建了一个C#DLL,它使用一个自定义对象(称为PropertyObject)来存储一些数据。我可以将它传递给VB6并使用它。但是,我有一个返回类型为PropertyObject的数组的函数,我不能在我的生命中将此返回的数组分配给Dim med数组。代码非常简单,如下所示:

Dim PObject As New PCom
Dim PropObj() As PropertyObject

PropObj = PObject.GetPropertyObjects()

每当我打电话给我时,我都会Run-time error '13': Type mismatch。尽管GetPropertyObjects返回 PropertyObject()数组。是否缺少某些东西,或者我是否需要像支持自定义数组类型的扩展一样疯狂?

1 个答案:

答案 0 :(得分:0)

在VB6中,“本机阵列”类型系统和“COM对象”类型系统真正不能很好地协同工作。您有时不得不求助于欺骗来强制VB6运行时执行您想要的操作。

尝试将方法返回值分配给中间变量变量,然后再尝试将其重新解释为数组,例如

Dim PObject As New PCom
Dim PropVar As Variant
Dim PropObj() As PropertyObject

PropVar = PObject.GetPropertyObjects()
PropObj = PropVar

即使这没有任何区别,您至少可以调试值的确切数据类型。 : - )

另外,尝试从方法调用的末尾删除(),这可能会对VB6如何解释数据产生影响。

相关问题