Визуальное наследование VB.NET: друг против защищен

Почему некоторые компоненты / элементы управления не будут наследоваться визуально в дочерней форме, если они объявлены с модификатором доступа Friend vs, когда они объявлены с помощью Protected.

Например, у меня есть объект DataSet в родительской форме, который изначально был "Друг" (я перетащил его в форму, поэтому он отображался в качестве элемента управления в представлении конструктора), но я заметил, что моя дочерняя форма не наследовал контроль, как ожидалось. Как только я изменил его на "Защищенный", он появился в форме "Ребенок", как и ожидалось

Мне известно, что Protected позволяет дочерней форме изменять унаследованный элемент управления, но как именно это связано с проблемой, описанной выше?

1 ответ

Это зависит от сборки, в которой объявлена ​​базовая форма. Если это другая сборка, чем та, в которой живет производная форма, то Friend не может работать. Члены, объявленные друзьями, доступны только внутри одной сборки.

Защищенный является правильным модификатором доступа здесь. Это гарантирует, что не имеет значения, в какой сборке объявлена ​​производная форма. И гарантирует, что только производные классы форм могут получить доступ к набору данных.

Другие вопросы по тегам