我通过从COM DLL生成的Interop程序集,在C#项目中调用COM组件。COM接口已定义DispIds,我已验证这些在生成的Interop程序集中出现。
经过实验,如果我将COM组件升级到新版本,则Interop调用会出现严重错误(就像它正在调用错误的COM方法)。
这是否是预期的,即Interop程序集与为其生成的特定版本的COM接口密切绑定?我曾天真地认为只要DispIds和函数原型在新的COM组件中匹配,那么一切都会正常工作。
是否有一种方式告诉CLR在通过Interop程序集调用COM组件时使用DispIds,即某种形式的后期绑定? (我知道可以使用反射样式的C#代码进行后期绑定,但这比Interop程序集不太方便。)
经过实验,如果我将COM组件升级到新版本,则Interop调用会出现严重错误(就像它正在调用错误的COM方法)。
这是否是预期的,即Interop程序集与为其生成的特定版本的COM接口密切绑定?我曾天真地认为只要DispIds和函数原型在新的COM组件中匹配,那么一切都会正常工作。
是否有一种方式告诉CLR在通过Interop程序集调用COM组件时使用DispIds,即某种形式的后期绑定? (我知道可以使用反射样式的C#代码进行后期绑定,但这比Interop程序集不太方便。)