我正在使用 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
,但是关于正确使用它的文档似乎有点薄,所以任何示例代码都会很有用。