Поскольку Control.CreateChildControls помечен как защищенный внутренний, он не должен быть виден внутри - PullRequest
0 голосов
/ 04 марта 2010

Я не могу понять, почему Control.CreateChildControls отображается в классе code-behind веб-страницы. А именно, Control.CreateChildControls определен как protected internal, что означает, что метод видим только для производных классов, расположенных внутри той же сборки, что и класс Control. Так как это возможно, поскольку, насколько мне известно, класс веб-страниц не скомпилирован в ту же сборку, что и класс Control (System.Web.dll)?

* 1004 спасибо *

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

Я считаю очень бесполезным характеризовать разницу между «защищенным и внутренним» и «защищенным или внутренним». Что является "защищенным внутренним"?

Вы могли бы сказать, что «защищенный внутренний» является наименее ограничивающей комбинацией защищенных и внутренних, поэтому он означает «защищенный и внутренний» ».

Можно также сказать «защищенный внутренний ограничивает доступ к производным элементам или членам сборки, поэтому это означает« защищенный или внутренний »».

Тьфу.

Лучший способ думать об этом:

  • доступность члена по умолчанию "private" - наименьший возможный домен доступности
  • модификатор расширяет область доступности члена
  • поэтому внутренняя защита защищает домен доступности дважды, один раз для производных элементов и один раз для членов сборки.

Подробнее об этом см .:

http://blogs.msdn.com/ericlippert/archive/2008/04/24/why-can-t-i-access-a-protected-member-from-a-derived-class-part-three.aspx

2 голосов
/ 04 марта 2010

К сожалению, формулировка «защищенный внутренний» вводит в заблуждение.Это означает «защищенный» или «внутренний» и не «защищенный» и «внутренний».

В ваших% программных файлах% \ microsoft visual studio 9.0 \ vc # \ Specifications \ 1033 у вас есть справочное руководство по C #, это в разделе 1.6.2.

Следовательно, производный классможно использовать.

1 голос
/ 04 марта 2010

Класс Page наследуется от Control, которые находятся как в пространстве имен System.Web.UI, так и в сборке System.Web.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...