C# 到 COM C++ 返回包含 System.String[*] 的对象,我该如何解包它?

问题描述 投票:0回答:0

我有一个正在迁移到 C# 的 VB6 OCX 项目。它在 Java (jni) 和 ATL C++ 实现之间提供了一个层。对于这个特定的调用,C# 实现了一个函数:

object ExecuteSynchronously(string command);

C++实现的IDL定义为:

HRESULT ExecuteSynchronously(
    [in] BSTR bstrCommand,
    [out, retval] VARIANT * pvData );

原来的VB6签名是:

Function ExecuteSynchronously(ByVal bstrCommand As String) As Variant

我正在使用内置封送处理并且函数成功,但返回的对象包含一个

System.String[*]
,我不知道如何取消引用该值。期望值是一个字符串。 C# 不会接受
System.String[*]
的转换,其他类型不会映射 (
String[]
,
String
).

更改 C++ 实现不是一个选项。

c# com ocx
© www.soinside.com 2019 - 2024. All rights reserved.