COM对象是动态还是静态

时间:2012-11-13 17:46:02

标签: c# .net-4.0 com

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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