1

我正在尝试做一种代理,我想知道 COM 方法和属性是静态的还是动态的。换句话说,.NET 是否调用 com 对象并告诉它要执行哪个方法,然后让 com 对象假装它已经执行了它(DynamicObject 允许您在 .NET 中执行的方式,只需为 TryInvokeMember 返回 true 而不执行任何操作),还是 .NET 实际上会直接调用 COM 方法(静态)?

4

1 回答 1

2

听起来您在问早期绑定(静态)和后期绑定(动态)之间的区别。C# 支持两者。

早期绑定要求您使用TlbImp.exe之类的工具创建一个 Interop 程序集,以生成 COM 对象的代理,该代理直接调用接口方法。

要使用后期绑定,您可以使用反射(混乱)或dynamic关键字在运行时绑定方法调用。

但是,COM 对象不会“假装”它执行了您要求的方法——如果该方法不存在,您将得到一个运行时异常。

于 2012-11-13T18:05:55.677 回答