gpt4 book ai didi

arrays - 如何将对象的数组/列表/集合从 C# 返回到 VB6

转载 作者:行者123 更新时间:2023-12-04 02:28:37 25 4
gpt4 key购买 nike

我正在创建一个 COM Visible C# 对象来代理对 VB6 应用程序的 Web 服务的调用。我有一个返回对象数组的方法。

public DocActionReport[] DocActionReportByDateRange(System.DateTime reportStartDate, System.DateTime reportEndDate)
{
object[] results = this.Invoke("DocActionReportByDateRange", new object[] {
reportStartDate,
reportEndDate});
return ((DocActionReport[])(results[0]));
}

当我通过 VB6 调用此方法时,如下所示:
Dim proxy As New QueueMovementServiceClient.ReadQueueInfo
Dim report() As QueueMovementServiceClient.DocActionReport

report = proxy.DocActionReportByDateRange(startDate, reportEndDate)

它成功执行(我可以通过登录 Web 服务看到),但没有数据返回到 VB6 中的对象( LBound(report) == 0, UBound(report) == -1 )。

我尝试了几种不同的方法(将方法更改为 void 方法并将集合作为 ref 参数传入),但到目前为止还没有任何乐趣。

我需要做什么才能将对象数组(列表、集合等)返回给 VB6 使用者?

最佳答案

这里有一个技巧给你:

  • 使用 VB6 Com 对象创建完全相同的界面
  • 将该 dll 导入 .net
  • 用户反射器查看生成的互操作界面,这将有望让您了解需要返回的类型,然后您可能只会得到根本无济于事的对象。

  • 在 VB6 中,如果我的内存可以追溯到足够远的话,他们使用了一些仍然让我紧张不安的东西,称为 SAFEARRAY。

    一个 SAFEARRAY 可能是这里需要返回的东西,看看这篇文章,我希望它对你有帮助(同样的问题)......

    How to pass a SAFEARRAY from C# to COM

    在阅读了 SAFEARRAY 之后,我的直觉是您将决定返回一个字符串,并且在调用的每一侧都有 toJSON 和 fromJSON 解析器;)

    关于arrays - 如何将对象的数组/列表/集合从 C# 返回到 VB6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226370/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com