C#中安全的VT_BSTR数组

时间:2014-05-07 17:57:28

标签: c# com com-interop

如何创建VT_BSTR的安全数组?我正在使用C#中的COM库,该库具有以下签名的函数:

void Add(string Name, object Value);

库文档说,使用该函数的方法之一是将“安全数组VT_BSTR(字符串)”作为值传递。示例C ++代码包括以下行:

psa = SafeArrayCreate( VT_BSTR, 1, &bounds);

有什么建议吗?


我终于找到了可行的代码。知道为什么这个工作但只传递任何字符串数组不是吗?

var temp = Array.CreateInstance(typeof(string), 1);
temp.SetValue(value, 0);
ContextItems.Add("IManExt.SaveAsOptionCmd.SaveAsTypesArray", temp);

1 个答案:

答案 0 :(得分:0)

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

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

请阅读此MSDN article了解详细信息,它已经过时了,但我认为它仍然可以使用。