我正在尝试从我的应用程序中的产品COM API调用方法。
我可以使用下面的代码使用单个参数成功调用该方法,但我需要传递一些额外的参数(作为重载添加)。
Type _apiType = Type.GetTypeFromProgID("TheAPI.TheServer");
object _api = Activator.CreateInstance(_apiType);
_apiType.InvokeMember(
"Connect",
System.Reflection.BindingFlags.InvokeMethod,
null,
_api,
new object[] { 2 } // new object[] {2, "", "" }
);
我尝试在上面的代码中添加其他参数,但是我收到以下错误:
"指定的参数数量与预期数量不符。"
我似乎无法找到任何答案,我开始认为这是不可能的。我发现的所有示例都建议使用Type.GetMethod(),但这似乎不适用于COM对象。
答案 0 :(得分:1)
COM不支持方法重载。这些方法的非托管/已发布COM签名(即TypeLibrary)已经过修饰 - 请参阅下面MSDN文章中提到的“Unmanaged Signature”部分。 http://msdn.microsoft.com/en-us/library/28w1w83f(v=vs.110).aspx
要查找实际方法名称,请在Visual Studio中执行以下操作: 查看|对象浏览器|编辑自定义组件集| (浏览到COM组件)
这将显示所有实际的方法名称。