我正在使用C#中的第三方COM库。
有get / set方法采用VARIANT类型的参数(类型VT_BSTR)。
在.NET包装器中,这些参数显示为类型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
这样的方法,但正确使用它的文档似乎有点薄,所以任何示例代码都会很有用。