0

我构建了一个 C# DLL,它使用自定义对象(称为PropertyObject)来存储一些数据。我可以将它传递给 VB6 并使用它。但是,我有一个返回 type 数组的函数,PropertyObject我不能终生将这个返回的数组分配给Dimmed 数组。代码相当简单,如下所示:

Dim PObject As New PCom
Dim PropObj() As PropertyObject

PropObj = PObject.GetPropertyObjects()

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

4

1 回答 1

0

在 VB6 中,“本机数组”类型系统和“COM 对象”类型系统确实不能很好地配合使用。您有时不得不使用诡计来强制 VB6 运行时执行您想要的操作。

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

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

PropVar = PObject.GetPropertyObjects()
PropObj = PropVar

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

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

于 2013-05-14T14:50:15.823 回答