我应该如何从旧的COM库中解释(严重翻译?)params参数?

时间:2014-02-10 17:52:51

标签: c# api com

我正在使用我通过API访问的旧COM库。似乎无法弄清楚如何使用具有以下签名的方法:

aCOMlibrary.AddSearchType(aCOMlibrary.enum.whatever, ref object[])

文档暗示可以通过以下两种方式之一使用:

'Method 1
object.AddSearchType ENUM_VALUE


'Method 2
object.AddSearchType ENUM_VALUE_1, ENUM_VALUE_2, ... ENUM_VALUE_n

我正在尝试在C#中执行方法1:

screen.AddSearchType(enum.value);

但是视觉工作室抱怨说我提供了无效的论据。所以,为了试图欺骗VS,我认为这可能有用:

screen.AddSearchType(enum.value, null);

此应用程序编译并运行,但此行抛出了一个关于for-loop未初始化的异常。

感到沮丧,我决定从文档中尝试“方法2”:

screen.AddSearchType(enum.ENUM_VALUE_1, enum.ENUM_VALUE_2);

但是在构建过程中抛出以下内容:

  
    

参数2:无法从'aCOMlibrary.enum'转换为'ref object []'

  

我错过了什么?我怎样才能哄这个笨拙的旧COM库来做我的出价?

1 个答案:

答案 0 :(得分:0)

原来我需要通过它

new object[1] {enum.ENUM_VALUE_2}

马特的评论让我大部分时间,但他的建议导致:

  
    

ref或out参数必须是可赋值变量

  

所以我放弃了ref并编译了。谢谢你的帮助!