如何将多个数据类型的数组传递给在C#4.0中声明为[in,out] SAFEARRAY(VARIANT)的COM对象?

时间:2012-07-18 16:19:57

标签: c#-4.0 com

我正在寻找帮助将具有多种数据类型的对象传递给COM对象,如下所示......

这是COM对象接口:

[id(0x00000004), helpstring("finds the next best item")]
unsigned long GetNextItem([in, out] SAFEARRAY(VARIANT) Content);

这是需要传递给COM对象的数组。

content[0][0] = 0.0 
content[0][1] = 1   
content[0][2] = 1   
content[0][3] = 1      
content[0][4] = -1  
content[0][5] = 0.0 
content[0][6] = 0.0

我有两个问题:

  1. 在C#4.0中创建可包含多种数据类型的对象。
  2. 通过公共接口将该对象传递给COM对象。
  3. 这是我无法通过的错误:

      

    SafeArrayTypeMismatchException {“指定的数组不是预期的类型。”}

    感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

content[0][0] = 0.0 

这是一个锯齿状的数组,无法转换为SafeArray。您需要创建一个多维数组:

var content = new object[42, 666];
content[0, 0] = 0.0;