4

我在托管代码 C# 中实现 IDispatch 接口。通读文档(是的,我知道这是一个坏主意)它说我可以使用InterfaceIsDual,InterfaceIsIDispatchInterfaceIsIUnknown. 我希望我的界面是后期绑定的,所以我会选择InterfaceIsDispatch.. 但是更多的阅读显示InterfaceIsDual应该是相同的。选择 Dual 和 Dispatch 之间会有任何功能差异吗?

4

1 回答 1

6

InterfaceIsDual 支持早期绑定和后期绑定。这使得 COM 客户端非常需要它,它可以在早期绑定的速度和自动完成支持以及后期绑定的安全性之间进行选择。

安全方面是它在 Microsoft 文档中被轻描淡写的原因,早期绑定到后来更改的接口而没有对接口 [Guid] 进行相应更改会产生非常难以诊断的运行时错误。从访问冲突到调用错误的方法。COM 版本控制是一件大事,为了避免麻烦而遵循的硬性规则经常被跳过,因为它们会引起痛苦。

于 2012-05-01T13:43:30.057 回答