c# - ComInterfaceType 属性是否应该不是 InterfaceIsDual

标签 c# com

我正在托管代码 C# 中实现 IDispatch 接口(interface)。通读文档(是的,我知道这是个坏主意),它说我可以使用 InterfaceIsDualInterfaceIsIDispatchInterfaceIsIUnknown 。我希望我的接口(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/

相关文章:

c# - 如何在 C# 中将两个结构类型变量链接在一起?

c# - 无法让 TcpClient 连接到 gmail

c++ - 如何将正错误代码从 ATL 返回到 VB6?

c# - 跟踪 com 对象 c# 的发布。

c# - 如何从 Silverlight 5 中的自定义目录执行外部程序

c# - 使用 C# 在 Unity 中绘图

c# - 你在单元测试中使用 TestContext 吗?

c# - 在 WPF/C# 中,如何检查中心按钮是否被单击或释放?

delphi - 更新后的 TWebBrowser 现在从一开始就实现了 IDocUIHandler,我如何继续使用我的自定义实现?

.net - COM 接口(interface)问题 - .NET