我有一个正在迁移到 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++ 实现不是一个选项。