0

我用 C# 编写了一个小型库。

在这个库中有两个类是ComVisible.

第一个具有提供自定义对象数组的方法(在第二个类中声明)。

我用一个小的 c# 应用程序测试了这个库,一切正常。然后我做同样的事情VB6。当我调用我之前描述的方法时会出现问题。我收到类型不匹配错误。

这是 BV6 代码:

   Private Sub Command1_Click()
       Dim Flussi As FMDriver.FMDriver  
       Set Flussi = New FMDriver.FMDriver
       [...]
       Dim temp() As FMDriver.FM
       temp = Flussi.GetElabData(station, codpar, data, tabella, nfunz, tiponfunz)
       [...]

这是自定义类FM

[ComVisible(true)]
public partial class FM
{
    public FM() { }

    [ComVisible(true)]
    public double Value { get; set; }

    [ComVisible(true)]
    public double IDisp { get; set; } 
}

任何的想法?如果从响应中我只提取一个元素,它就可以工作。

编辑:

另一个奇怪的事情...

Dim pippo As FM
Set pippo = CreateObject("fmdriver.fm")
pippo.Value = 100
pippo.IDisp = 43    
pippo = Flussi.GetElabData( [..cut..] )(4)

在数组的第 4 个位置返回Pippo.Value正确的值,但值没有改变,它保持不变,而不是获取新值。GetElabDataPippo.IDisp43

4

1 回答 1

0

In the end I created all my beautifull methods that returns custom obj (for .NET apps) and a couple of methods, dedicated to VB6, with the [ComVisible(true)] tag, that returns more siple arrays of values (part of the result of the other methods). So I think that returning custom Obj to VB6 it's not very reliable and sometimes it doesn't work at all.

于 2012-11-29T10:44:24.980 回答