c#中VT_BSTR的安全数组
本文关键字:安全 数组 BSTR VT | 更新日期: 2023-09-27 18:02:08
如何创建一个安全的VT_BSTR数组?我正在使用c#中的COM库,该库具有以下签名的函数:
void Add(string Name, object Value);
库文档说,使用该函数的一种方法是传递"VT_BSTR (string)的安全数组"作为值。示例c++代码包括这一行:
psa = SafeArrayCreate( VT_BSTR, 1, &bounds);
有什么建议吗?
我终于找到了可以工作的代码。知道为什么这行得通,而传递任意字符串数组却不行吗?
var temp = Array.CreateInstance(typeof(string), 1);
temp.SetValue(value, 0);
ContextItems.Add("IManExt.SaveAsOptionCmd.SaveAsTypesArray", temp);
因为你在c#中使用COM,所以你不需要创建SafeArray。在你的c#项目中,添加一个引用,你可以找到有一个COM选项卡的对话框,单击该选项卡并找到你的COM dll,并将其添加为引用,然后它将为COM dll创建一个c#包装程序集,你只需使用这个c#包装器中的函数和类。
你不需要处理SafeArray,当在c++中使用COM时,你必须使用它。
请阅读这篇MSDN文章的详细信息,它是旧的,但我认为它仍然有效。