2011-05-04 31 views
4

我需要創建一個SafeArray傳遞給COM方法。
如何在C#中創建/維護/銷燬SafeArray?如何創建一個SafeArray C#?

我從來沒有遇到SafeArrays之前,找不到很多快速谷歌搜索,所以任何幫助非常感謝。

編輯:添加示例代碼:

的COM方法簽名

[id(0x000000d5)] 
HRESULT GetTags(
       [in] SAFEARRAY(long) buffer, 
       [out, retval] long* retval); 

在C#中生成的互操作方法

int GetTags(System.Array buffer) 
    Member of Cwise.IUser 

因此,在這種情況下,我必須創建一個SafeArray還是我可以簡單地將一個普通的.Net數組傳遞給COM方法GetTags?

回答

8

使用這樣的代碼,這

Array ar = Array.CreateInstance(typeof (int), 500); 

,而不是typeof(int)使用自己的數據類型,你的COM對象必須說,你是什麼類型的期待。

+0

@Eugen:我認爲它期待typeof int,但我應該怎麼知道數組的大小? – shane87 2011-05-04 16:40:55

+0

通常COM對象將需要告​​訴你數組的大小。幾乎所有使用相同方法的Windows API方法,如果您發送空值,它們將返回所需的大小,然後創建數組並將其傳遞給方法。不知道你的COM是如何創建的。 – Eugen 2011-05-04 19:03:40

+0

我編輯了我在問題中提供的示例代碼,如果這對您更有意義? – shane87 2011-05-05 10:17:50