我正在托管代码 C# 中实现 IDispatch 接口(interface)。通读文档(是的,我知道这是个坏主意),它说我可以使用 InterfaceIsDual
、InterfaceIsIDispatch
或 InterfaceIsIUnknown
。我希望我的接口(interface)是后期绑定(bind)的,所以我会选择 InterfaceIsIDispatch
..但是更多的阅读表明 InterfaceIsDual
应该是一样的。选择 Dual 和 Dispatch 在功能上会有什么区别吗?
最佳答案
InterfaceIsDual 支持早期绑定(bind)和后期绑定(bind)。这使得 COM 客户端非常需要它,它可以在早期绑定(bind)的速度和自动完成支持与后期绑定(bind)的安全性之间做出选择。
安全方面是它在 Microsoft 文档中被淡化的原因,早期绑定(bind)到后来更改的接口(interface)而没有对接口(interface) [Guid] 进行相应更改会产生非常难以诊断的运行时错误。从访问冲突到调用错误的方法。 COM 版本控制是一件大事,为避免麻烦而必须遵循的硬性规则经常被跳过,因为它们会带来痛苦。
关于c# - ComInterfaceType 属性是否应该不是 InterfaceIsDual,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398442/