从.NET到VB6的自定义对象数组

时间:2012-08-30 16:01:21

标签: c# .net vb6 com-interop

我用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)

Pippo.Value中,GetElabData在数组的第4个位置返回的正确值,但在Pippo.IDisp中,值不会更改,它仍为43 {1}}而不是获取新值。

1 个答案:

答案 0 :(得分:0)

最后,我创建了所有返回自定义obj(针对.NET应用程序)的美丽方法以及一些专用于VB6的方法,使用[ComVisible(true)]标记,返回更多siple值数组(部分)其他方法的结果)。 所以我认为将自定义Obj返回到VB6它不是很可靠,有时根本不起作用。