在C#中访问未在类型库中定义的方法

时间:2013-05-29 10:15:03

标签: c#

在为第三方应用程序创建插件时,我遇到了一个问题,即应用程序创建者提供的类型库不包含插件可用的所有方法。

如果我使用 VisualBasic 并且没有设置 Option Strict On ,基本上一切都有效。一旦我将其设置为“On”,我就会收到严格打开后无法进行后期绑定的错误。

现在我真的想将此代码移植到C#,但我无法弄清楚如何使这些方法起作用。

插件系统以我的插件获取Application对象的方式工作,稍后我只是调用: Application.IntermediateObject.InterestingMethod(Variable) - 这在没有“Strict On”的VB中工作正常

在C#中,这甚至不能编译,因为 IntermediateObject 不包含“InterestingMethod”的定义(我也可以通过使用Windows SDK COM对象浏览器看到)。 到目前为止,我最好的猜测是我应该能够用这样的东西来实现它:

IntermediateObject.GetType().GetMethod("InterestingMethod");

但结果只是“空”。

我在这里做错了吗?或者这是一个死胡同,我必须坚持VB?

PS :我无权让应用程序创建者修复其类型库,因此这不是一个选项。

1 个答案:

答案 0 :(得分:4)

您可以尝试在此处使用dynamic关键字:

dynamic tmp = Application.IntermediateObject;
tmp.InterestingMethod(variable);

这可能有用,虽然我不确定反射似乎不起作用。