1

我正在使用 C# 中的第三方 COM 库。

有些 get/set 方法采用 VARIANT 类型的参数(类型 VT_BSTR)。在 .NET 包装器中,这些参数显示为 type object,即

object getValue();
void setValue( object val );

getValue 方法工作正常,我执行对象的简单转换以键入字符串:

string str = (string)comObject.getValue();

但是以类似的方式设置字符串不会:

string str = "test";
comObject.setValue( str );

第三方库不喜欢这样,会产生异常。它必须期待 VT_BSTR 类型的 VARIANT(因为它适用于本机 C++)。所以我的问题是,如何在 C# 中创建其中之一?

我一直在研究类似的方法Marshal.GetNativeVariantForObject,但是关于正确使用它的文档似乎有点薄,所以任何示例代码都会很有用。

4

1 回答 1

3

使用BStrWrapper类:

comObject.setValue(new BStrWrapper(str));
于 2009-10-08T16:28:03.893 回答