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#中VT_BSTR的安全数组

因为你在c#中使用COM,所以你不需要创建SafeArray。在你的c#项目中,添加一个引用,你可以找到有一个COM选项卡的对话框,单击该选项卡并找到你的COM dll,并将其添加为引用,然后它将为COM dll创建一个c#包装程序集,你只需使用这个c#包装器中的函数和类。

你不需要处理SafeArray,当在c++中使用COM时,你必须使用它。

请阅读这篇MSDN文章的详细信息,它是旧的,但我认为它仍然有效。