gpt4 book ai didi

c# - 使用反射从 COM 对象调用重载方法?

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:19 30 4
gpt4 key购买 nike

我正在尝试从我的应用程序中的产品 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, "", "" }
);

我尝试在上面的代码中添加额外的参数,但出现以下错误:

"Number of parameters specified does not match the expected number."

我似乎找不到任何答案,我开始认为这是不可能的。我发现的所有示例都建议使用 Type.GetMethod() 但这似乎不适用于 COM 对象。

最佳答案

COM 不支持方法重载。这些方法(即 TypeLibrary)的非托管/发布的 COM 签名被装饰 - 请参阅下面的 MSDN 文章中提到“非托管签名”的部分。 http://msdn.microsoft.com/en-us/library/28w1w83f(v=vs.110).aspx

要查找实际的方法名称,请在 Visual Studio 中执行以下操作:查看 |对象浏览器 |编辑自定义组件集 | (浏览到 COM 组件)

这将显示所有实际的方法名称。

关于c# - 使用反射从 COM 对象调用重载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250505/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com