【发布时间】:2015-03-15 23:36:16
【问题描述】:
我在谷歌上搜索了很多,发现没有人愿意解释为什么 COM 接口是不可变的,这很奇怪。我想您无法从 COM 接口中删除任何方法的原因是因为依赖该接口的客户端会遇到错误,这不好。但是,为什么向界面添加新功能会改变这一切呢?这和底层的 vtable 有关系吗?
【问题讨论】:
-
合同是合同,是合同......
-
当然,但是向接口添加新方法如何破坏使用 COM 组件的客户端?
-
你必须提供一个额外的接口。 COM 合同是固定的,不能扩展,而不会破坏您的客户。这是 IDL 编译器的本质。