我正在开发一个 C# 库,我需要从 COBOL(非托管)代码中调用它。因此,我将 COM 互操作用于这些目的。
我创建了一个调解通信的层“ModuleLanucher”。我已经通过这些命令注册了这个 ModuleLauncher 库:
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
当我尝试从此 COBOL 代码调用 foo 方法时,出现此错误:
类 oleexceptionmanager 未捕获异常 65538。说明:“OLE 参数计数不匹配”(8002000E):参数数量无效
是否可以让 COM 对象函数具有可变数量的参数?
感谢您的任何建议