我需要在3.5 C#应用程序中延迟绑定到第三方VB6 COM对象(以避免我们目前拥有的版本依赖关系)。由于某些在我们尝试正常使用时会导致错误的错误,因此提供的dll在大多数非后期方式中不会消耗。目前,我们正在使用一个自定义的VB6包装器,它使事情具有特定的版本,但是我发现我可以使用后期绑定来访问属性和方法。现在,我试图对事件进行后期绑定,但是我读过的所有内容都说我需要从COM包装器的接口继承来创建所需的事件接收器。 Here is one such article。如何在没有接口的情况下绑定COM事件
所以,我的问题是,是否有可能在编译时没有任何引用dll的情况下执行后期绑定事件处理?
UPDATE
以下是我与VB6包装(目前仍在积极更新)中的错误。
- 在OleViewer,我得到
未能进行反编译选定的项目错误加载类型库/ DLL。 TYPE_E_CANTLOADLIBRARY($ 80029C4A)
- 在Visual Studio我得到:
无法确定COM参考 “3rdPartyDLL” 的依赖。加载类型库/ DLL时出错。 (异常来自HRESULT :0x80029C4A(TYPE_E_CANTLOADLIBRARY))
我很好奇:当您尝试早期使用VB6对象时,看到的错误是什么?我写过很多VB6 COM组件,并且在任何其他环境中使用它们(只要客户端支持COM)从来没有遇到过任何问题。为什么你甚至会关心VB6组件的版本控制 - 是否由它的作者积极开发? – xxbbcc
@xxbbcc它仍在积极开发中,我更新以显示错误 –
@WhozCraig:VB6事件始终只基于IDispatch。 – wqw