2

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

如果我使用VisualBasic并且没有设置Option Strict On ,基本上一切正常。一旦我将其设置为“开”,我就会收到错误,即后期绑定不适用于 Strict On

现在我真的很想将此代码移植到 C#,但我不知道如何让这些方法工作。

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

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

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

但结果只是“空”。

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

PS:我无权让应用程序创建者修复他们的类型库,所以这不是一个选项。

4

1 回答 1

4

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

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

这可能会起作用,尽管我不确定反射似乎不起作用。

于 2013-05-29T10:18:12.623 回答