5
我有一個第三方COM庫,我正在使用並且遇到數組參數問題。在C#中使用ref數組參數與COM互操作
我正在調用該方法的簽名如下:
int GetItems(ref System.Array theArray)
文檔說,該方法的返回值是將填充到陣列中的項目數,但是當它得到的調用,所有即使該方法返回一個非零的返回值,數組中的值也只是默認值(它們是結構體)。
我知道這裏有一些時髦的COM互操作的東西,但我真的沒有太多的經驗和無法解決它。這是我試圖訪問它的方式:
Array items = Array.CreateInstance(typeof(structItem), 100);
int numberOfItems = instance.GetItems(items);
Array items = Array.CreateInstance(typeof(structItem), 100);
int numberOfItems = instance.GetItems(ref items);
structItem[] items = new structItem[100];
int numberOfItems = instance.GetItems(items);
structItem[] items = new structItem[100];
int numberOfItems = instance.GetItems(ref items);
我在做什麼錯?
更新:我認爲這可能與SafeArrays有關,如下所述:http://www.west-wind.com/Weblog/posts/464427.aspx區別在於我應該通過ref傳遞數組,而不僅僅是處理返回值。本文中的具體解決方案不起作用,但我覺得我變暖了。