Tengo una biblioteca COM de terceros que estoy consumiendo y tengo problemas con los parámetros de la matriz.Uso de los parámetros Ref Array en C# con interoperabilidad COM
La firma del método que estoy llamando es el siguiente:
int GetItems(ref System.Array theArray)
La documentación dice que el valor de retorno del método es el número de elementos que se rellenará en la matriz, pero cuando se consigue de llamados, todos de los valores en la matriz son solo valores predeterminados (son estructuras) aunque el método devuelva un valor de retorno distinto de cero.
Sé que hay algunas cosas funky COM de interoperabilidad aquí, pero realmente no tengo mucha experiencia y no puedo entenderlo. Así es como he intentado acceder a él:
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);
¿Qué estoy haciendo mal?
ACTUALIZACIÓN: Creo que podría tener algo que ver con SafeArrays, como se describe aquí: http://www.west-wind.com/Weblog/posts/464427.aspx La diferencia es que se supone que debo pasar la matriz por ref, no solo manejar un valor de retorno. La solución específica de este artículo no funciona, pero siento que me estoy calentando.