Визуальное наследование VB.NET: друг против защищен
Почему некоторые компоненты / элементы управления не будут наследоваться визуально в дочерней форме, если они объявлены с модификатором доступа Friend vs, когда они объявлены с помощью Protected.
Например, у меня есть объект DataSet в родительской форме, который изначально был "Друг" (я перетащил его в форму, поэтому он отображался в качестве элемента управления в представлении конструктора), но я заметил, что моя дочерняя форма не наследовал контроль, как ожидалось. Как только я изменил его на "Защищенный", он появился в форме "Ребенок", как и ожидалось
Мне известно, что Protected позволяет дочерней форме изменять унаследованный элемент управления, но как именно это связано с проблемой, описанной выше?
1 ответ
Это зависит от сборки, в которой объявлена базовая форма. Если это другая сборка, чем та, в которой живет производная форма, то Friend не может работать. Члены, объявленные друзьями, доступны только внутри одной сборки.
Защищенный является правильным модификатором доступа здесь. Это гарантирует, что не имеет значения, в какой сборке объявлена производная форма. И гарантирует, что только производные классы форм могут получить доступ к набору данных.