Краткий ответ: вам нужно передать массив по ссылке ref (см. Примечание в AutomationFactory чуть выше примера [массивы передаются по значению в C #]). - Проблема в том, что SL будет блокировать с исключением аргумента при вызове proxy.Test(ref integers)
(не знаю почему). Обходной путь заключается в том, что SL передаст массив по ссылке, если метод получает объект по ссылке, поэтому это работает ...
[ComVisible(true)]
public interface IProxy
{
void Test( ref object integers);
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class Proxy : IProxy
{
[ComVisible(true)]
public void Test(ref object intObj)
{
var integers = (int[])intObj;
integers[0] = 999;
}
}
И с добавлением кода SL, например:
dynamic proxy = AutomationFactory.CreateObject("NevermindComProxy.Proxy");
var integers = new int[5];
proxy.Test( ref integers);
Удалите ссылку из определения вызывающего или интерфейса, и массив не обновится.