我构建了一个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()数组。是否缺少某些东西,或者我是否需要像支持自定义数组类型的扩展一样疯狂?
答案 0 :(得分:0)
在VB6中,“本机阵列”类型系统和“COM对象”类型系统真正不能很好地协同工作。您有时不得不求助于欺骗来强制VB6运行时执行您想要的操作。
尝试将方法返回值分配给中间变量变量,然后再尝试将其重新解释为数组,例如
Dim PObject As New PCom
Dim PropVar As Variant
Dim PropObj() As PropertyObject
PropVar = PObject.GetPropertyObjects()
PropObj = PropVar
即使这没有任何区别,您至少可以调试值的确切数据类型。 : - )
另外,尝试从方法调用的末尾删除()
,这可能会对VB6如何解释数据产生影响。