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