Я разрабатываю библиотеки C#, которые мне нужно вызвать из COBOL (неуправляемого) кода. Поэтому я использую COM-взаимодействие для этих целей.COM interop: переменное количество параметров
Я создал слой «ModuleLanucher», который опосредует связь. Я зарегистрировал эту библиотеку ModuleLanucher этими командами:
regasm ModuleLanucher.dll /codebase
TLBEXP Modulelanucher.dll
Все работает нормально, если у меня есть конкретное количество параметров в функции Foo. (см. ниже)
К сожалению, для моей функции foo требуется переменное количество аргументов. Это эскиз моего кода:
namespace NMSPC
{
class ModuleLanucher
{
void foo(string moduleName, params object[] args)
{
//call some dlls with args as parameteres
}
}
}
Из COBOL кода я звоню COM функция Foo:
VCCOMServer is class "$OLE$NMSPC.ModuleLanucher"
invoke VCCOMServer "new" returning anInstance
invoke anInstance "foo" using MODULENAME, PARAM01, PARAM02, PARAM03, PARAM04
Когда я пытаюсь вызвать метод Foo из этого COBOL кода, я получаю эту ошибку:
Исключение 65538 не в ловушке класса oleexceptionmanager. Описание: «Несоответствие счетчика OLE-параметров» (8002000E): Недопустимое число параметров
Возможно ли иметь функцию COM-объекта с переменным числом аргументов?
Спасибо за любые предложения