在白天的工作中,我使用的是VB6(我知道,但不要嘲笑受折磨的......)应用程序,它使用了我们编写的许多库(也是在着名的VB6中)。其中一个支持库有大量私有成员通过公共属性公开,我被要求删除属性,并将私有成员变量提升到与原始属性同名的公共字段。
现在,我不是COM专家,但我的印象是一个类上的每个暴露项都获得了它自己的GUID。因为我们将从每个值从2个Guids(Property Get和Property Let)变为仅使用一个(公共字段)的情况开始,我期望这会破坏二进制兼容性 - 但它似乎没有做完了。
任何人都可以解释原因吗?
答案 0 :(得分:6)
不,它没有破坏兼容性,因为它没有删除属性get和property let方法。只是编译器正在为你编写它们。
这不是VB6可以说比<.Net更好的少数领域之一吗?
答案 1 :(得分:1)
我认为它比这更微妙。您将获得COM接口的GUID(而不是每个单独的字段/方法)。据我所知,如果你当前编译的接口向后兼容你的DLL的参考版本(假设你有一个),二进制兼容性尝试解决,并且只有在它们不兼容时才更改GUID。
因此我还惊讶于它决定删除所有get / set方法兼容:/