Ich habe eine COM-Bibliothek von Drittanbietern, die ich konsumiere und habe Probleme mit Array-Parameter.Verwenden von Ref-Array-Parameter in C# mit COM-Interop
Die Signatur der Methode, die ich rufe ist wie folgt:
int GetItems(ref System.Array theArray)
Die Dokumentation sagt, dass der Rückgabewert der Methode ist die Anzahl der Elemente in das Array füllen, aber wenn es genannt bekommen, alle Die Werte im Array sind nur Standardwerte (sie sind Strukturen), obwohl die Methode einen Rückgabewert ungleich Null zurückgibt.
Ich weiß, es gibt einige funky COM Interop Zeug hier, aber ich habe wirklich nicht viel Erfahrung damit und kann es nicht herausfinden. So habe ich versucht, darauf zuzugreifen:
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);
Was mache ich falsch?
UPDATE: Ich denke, es könnte etwas mit SafeArrays zu tun haben, wie hier beschrieben: http://www.west-wind.com/Weblog/posts/464427.aspx Der Unterschied ist, dass ich das Array durch Ref übergeben soll, nicht nur einen Rückgabewert behandeln. Die spezifische Lösung aus diesem Artikel funktioniert nicht, aber ich fühle mich, als ob ich wärmer werde.