在为第三方应用程序创建插件时,我遇到了一个问题,即应用程序创建者提供的类型库不包含插件可用的所有方法。
如果我使用 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 :我无权让应用程序创建者修复其类型库,因此这不是一个选项。
答案 0 :(得分:4)
您可以尝试在此处使用dynamic
关键字:
dynamic tmp = Application.IntermediateObject;
tmp.InterestingMethod(variable);
这可能有用,虽然我不确定反射似乎不起作用。