Я вызываю предоставленную извне COM DLL, для которой я создал оболочку COM-взаимодействия. В качестве аргумента давайте назовем интерфейс, который я хочу вызвать, IEnumFoo
.
IEnumFoo
имеет типичный шаблон перечислителя COM:
HRESULT Next (
ULONG celt,
IFoo** rgelt,
ULONG* pceltFetched
);
где первый параметр - это количество желаемых результатов, второй параметр - это буфер, в который записываются результаты, а последний параметр описывает количество фактически записанных результатов.
Когда я выбираю «Добавить ссылку» и указываю Visual Studio на эту DLL, она генерирует сборку COM-взаимодействия со следующей подписью:
void Next(uint, out IFoo, out uint)
Это позволяет коду .NET запрашивать только один объект за раз, что может значительно увеличить нагрузку на использование этих API.
Есть ли какой-то механизм, который я могу использовать для генерации версии Next
, который позволил бы мне предоставить больше IFoo
"слотов" над ними, которые порадовали бы упаковщика? (Я не прочь вручную отредактировать IL в сборке взаимодействия :))