Почему общедоступные поля и свойства попеременно двоичные совместимый?

В дневном задании я работаю над VB6 (я знаю, но не дразню сокрушенный...), приложение, которое пользуется многими библиотеками, которые мы записали (также в когда-либо прославленном VB6). Одна из этих библиотек поддержки имела загрузку членов парламента, не занимающих официального поста, подвергнутых через общественные собственности, и меня попросили удалить свойства и продвинуть переменные члена парламента, не занимающего официального поста в общедоступные поля с тем же именем как исходные свойства.

Теперь, я не эксперт COM, но у меня создалось впечатление, что каждый выставленный объект на классе получает свой собственный GUID. Так как мы шли бы от ситуации, куда каждое значение пошло от 2 Гуидов (Свойство Добираются, и Свойство Позволило) к тому, где они только использовали один (общедоступное поле), я ожидал, что это повредит совместимость на уровне двоичных кодов - но кажется, что это не сделало этого.

Кто-либо может объяснить почему?

5
задан DaveInCaz 28 June 2018 в 16:04
поделиться

2 ответа

Я думаю, что это немного более тонко, чем это. Вы получаете GUID для COM-интерфейса (а не для каждого отдельного поля / метода). Насколько я понимаю, двоичная совместимость пытается выяснить, является ли интерфейс, который вы в настоящее время компилируете, обратно совместим с эталонной версией вашей DLL (при условии, что она у вас есть) и изменяет GUID только в том случае, если они несовместимы.

Поэтому я также удивлен, что он решил, что удаление всех методов get / set является совместимым: /

1
ответ дан 14 December 2019 в 08:44
поделиться

Нет, он не работает совместимость, потому что не удалил методы property get и property let. Просто компилятор сейчас их за вас пишет.

Разве это не одна из немногих областей, где VB6, возможно, лучше , чем .Net?

6
ответ дан 14 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: