Модификаторы доступа и наследование форм
С модификаторами доступа вы сталкивались, когда изучали синтаксис языка C#. Используя их, можно определить область видимости, иначе говоря, уровень доступности типов и членов классов, — под этим понимается участок кода, из любой точки которого будет доступен запрашиваемый тип или член класса. Технология Common Type System (CTS, система общих типов) — одна из технологий, обеспечивающих функционирование среды .NET, определяет правила для видимости типов и доступа к их членам. Различные типы модификаторов и их описание приводятся в таблице 2.3.
public (общественный, открытый) | Объект доступен любому коду из любой сборки |
private (частный, закрытый) | Объект может быть вызван другими методами только из того же типа |
internal (внутренний, сборочный) | Объект может быть вызван любым кодом из той же сборки |
protected (защищенный, родовой) | Объект может быть вызван производными типами независимо от их сборки |
protected internal (родовой сборочный) | Объект может быть вызван производными типами, определенными в той же самой сборке |
В качестве объекта могут выступать методы, свойства, классы и, как мы далее увидим, — формы. Под сборкой здесь понимается функциональная единица кода (строгое определение сборок см. в лекции 9).
Наследование классов — достаточно простое и чрезвычайно удобное понятие синтаксиса С#. Формы, которые содержат большую часть методов и свойств, определенных как public, тоже можно наследовать — для получения доступа к свойствам, определенным как protected, и для ускорения работы. В самом деле, если у нас имеется уже готовая форма (например, About Notepad C#), которую мы собираемся использовать в нескольких приложениях, удобно просто создать наследуемую форму.
Запускаем приложение Notepad C# и в окне Solution Explorer щелкаем правой кнопкой на названии проекта. В появившемся контекстном меню выбираем Add\Add Inherited Form… . В окне Add New Item задаем название формы — IAbout.cs. Далее появляется окно Inheritance Picker, в котором отображаются все формы текущего проекта (рис. 2.27).
Рис. 2.27. Окно выбора формы для наследования Inheritance Picker
В этом окне мы выбираем форму About. Обратите внимание на кнопку Browse, позволяющую искать формы для наследования в библиотеках dll. Нажимаем кнопку OK — в проекте появилась новая форма, содержащая все элементы управления формы About (рис. 2.28). Для завершения связей необходимо скомпилировать проект cнова — выбрав пункт главного меню Build/Rebuild Solution.
Рис. 2.28. Форма IAbout, наследованная от формы About
При редактировании родительской формы изменения также касаются дочерней — добавьте, например, кнопку на форму About, и она появится на форме IAbout. Изменения же, производимые с дочерней формой, не затрагивают родительскую форму.