Архитектура времени разработки
Следующий рисунок дает общее представление об архитектуре времени разработки в платформе .NET Framework:
Платформа .NET Framework предоставляет интерфейсы и классы для настройки поведения компонентов и пользовательских интерфейсов среды разработки. Среда разработки обычно включает конструктор форм, отвечающий за размещение компонентов, а также обозреватель свойств, предоставляющий возможность настройки значений свойств компонентов. Среда разработки, как правило, также предоставляет службы, которые доступны для использования предназначенными для времени разработки механизмами.
Платформа .NET Framework определяет интерфейсы, которые разработчики могут использовать для реализации пользовательских средств поддержки во время разработки. Основные механизмы, расширяющие возможности режима разработки, делятся на следующие категории: конструкторы, преобразователи типов и редакторы типов пользовательского интерфейса. Для связи типов и членов типов с поставщиками средств поддержки во время разработки для типов и членов типов применяются атрибуты.
Атрибуты
Атрибуты связывают тип или член типа с классом, который расширяет реакцию на событие во время разработки. Атрибут DesignerAttribute связывает тип с конструктором. Атрибут TypeConverterAttribute связывает тип или член типа с преобразователем типов. Атрибут EditorAttribute связывает тип или член типа с редактором типов пользовательского интерфейса. Дополнительные сведения об атрибутах платформы .NET Framework см. в разделах Атрибуты времени разработки для компонентов и Атрибуты и поддержка во время разработки.
Конструкторы
Конструктор позволяет настраивать поведение компонента во время разработки, включая его отображение, инициализацию и взаимодействие с пользователем. С помощью конструктора можно добавлять, удалять или заменять свойства выбранного компонента, перечисленные в обозревателе свойств. Конструктор предоставляет возможность связывать определенные пользователем методы с событиями конкретного компонента или вызывать их посредством команды пользовательского меню или команды конструктора (DesignerVerb). Конструктор также может использовать предоставляемые средой разработки службы. Дополнительные сведения о конструкторах см. в разделе Пользовательские конструкторы.
Преобразователи типов
Преобразователь типов реализуется для преобразования значений из типа, изначально предусмотренного для данного преобразователя, в другие типы данных или наоборот. Преобразователь типов также позволяет настраивать свойства в обозревателе свойств во время разработки. С помощью преобразователя типов во время разработки в обозревателе свойств может быть предоставлен список стандартных значений свойства типа, поддерживаемого преобразователем. Преобразователь типов также позволяет создавать код для инициализации свойства во время разработки. Сведения о реализации преобразователя типов см. в разделе Практическое руководство. Реализация преобразователя типов.
Редакторы типов пользовательского интерфейса
Редактор типов пользовательского интерфейса предоставляет специализированный пользовательский интерфейс для редактирования значения свойства, а также отображения его представления во время разработки. Редактор типов пользовательского интерфейса является "типозависимым"; во время разработки он предоставляет пользовательский интерфейс для настройки свойств того типа, для которого он был изначально создан, или для свойств производных типов, которые не имеют переопределяющего атрибута. Для настройки свойства редактор типов пользовательского интерфейса может отображать форму Windows Forms или раскрывающийся список. Дополнительные сведения о реализации редактора типов пользовательского интерфейса см. в разделе Практическое руководство. Реализация редактора типов пользовательского интерфейса.
Примечание
Преобразователи типов и редакторы типов пользовательского интерфейса используются как во время разработки, так и во время выполнения, а конструкторы используются исключительно во время разработки.
Типы, связанные с конструктором
В следующих таблицах приведены некоторые важные классы в пространствах имен, связанных с конструктором.
System.Drawing.Design
Тип |
Описание |
---|---|
Предоставляет базовый класс, который можно использовать для реализации редакторов значений. |
|
Предоставляет методы и свойства для управления Панелью элементов в среде разработки и выполнения запросов к этой панели. |
|
Обеспечивает базовую реализацию элемента панели инструментов. |
System.ComponentModel.Design
Тип |
Описание |
---|---|
Предоставляет базовый класс для типов, которые представляют список элементов, используемых для создания области смарт-тега. |
|
Представляет пользовательский интерфейс для разработки компонентов. |
|
Предоставляет базовую оболочку для построения настраиваемого конструктора. |
|
Предоставляет поддержку технологий просмотра конструктора корневого уровня. |
|
Предоставляет интерфейс для добавления и удаления поставщиков расширителей во время разработки. |
|
Определяет универсальную функциональность отмены и повтора действия. |
System.Windows.Forms.Design
Тип |
Описание |
---|---|
Предоставляет интерфейс для редакторов типов пользовательского интерфейса для отображения Windows Forms или элементов управления в раскрывающейся области элемента управления PropertyGrid во время разработки. |
|
Базовый класс конструктора, предназначенный для расширения реакции элемента Control на событие во время разработки. |
|
Базовый класс конструктора, предназначенный для расширения реакции элемента Control на событие в режиме конструктора, а также для предоставления корневого вида режима конструктора для этого элемента; данный элемент поддерживает вложенные элементы управления и должен получать сообщения прокрутки. |
System.Windows.Forms.Design.Behavior
Тип |
Описание |
---|---|
Управляет пользовательским интерфейсом в конструкторе. |
|
Представляет объекты Behavior, управляемые данным службой BehaviorService. |
|
Управляет коллекцией объектов Glyph, связанных с интерфейсом пользователя. Этот класс не наследуется. |
|
Представляет отдельный объект пользовательского интерфейса, управляемого Adorner. |
Службы времени разработки
Во время разработки платформа .NET Framework предоставляет набор служб, расширяющих возможности конструктора. Доступ к этим службам можно получить с помощью метода GetService компонента, находящегося в режиме конструктора. Имеется возможность добавлять собственные типы служб, обращаться к которым можно из проекта, находящегося в режиме конструктора, с помощью метода AddService интерфейса службы IDesignerHost.
Интерфейс IComponentChangeService позволяет конструктору получать сообщения об изменении, добавлении или удалении компонентов среды разработки.
Интерфейс IDesignerEventService позволяет конструктору получать сообщения об изменении, добавлении или удалении конструкторов в среде разработки, а также принимать уведомления об изменениях, касающихся выбора текущих компонентов.
Интерфейс IDesignerFilter позволяет конструктору добавлять и фильтровать набор свойств, отображаемых в обозревателе свойств данного компонента.
Интерфейс IDesignerHost предоставляет интерфейс для добавления и извлечения служб, обработки событий, связанных с состоянием конструктора, определения того, загружен ли конструктор, а также управления транзакциями конструктора или компонентами. Транзакции конструктора помогают повысить быстродействие за счет выполнения последовательности действий в режиме, блокирующем обновление отображения представления во время разработки до тех пор, пока вся последовательность не будет полностью завершена; при этом предоставляется механизм, позволяющий отменить относящиеся к компонентам операции транзакции и вернуться в исходное состояние.
Интерфейс IDesignerOptionService позволяет конструктору получать и устанавливать значения свойств, перечисленных в таблице свойств конструктора Windows Forms, доступной посредством команды Параметры меню Сервис среды Visual Studio. Класс DesignerOptionService расширяет гибкость запросов параметров.
Для работы с определенными пользователем данными и парами ключей, доступными по ключу или значению, применяется интерфейс IDictionaryService, который позволяет конструктору оперировать использующей ключи коллекцией.
Интерфейс IEventBindingService позволяет конструктору при выборе компонента во время разработки отображать события данного компонента в обозревателе свойств.
Интерфейс IExtenderListService предоставляет конструктору список поставщиков расширителей, активных в данный момент в среде разработки. Интерфейс IExtenderProviderService позволяет конструктору во время разработки добавлять или удалять поставщиков расширителей.
Интерфейс IHelpService позволяет конструктору создавать или удалять контексты служб справки и их атрибуты, а также отображать справочные разделы в соответствии с указанным ключевым словом или URL-адресом.
Интерфейс IInheritanceService позволяет конструктору искать компоненты производных классов и идентифицировать их атрибуты наследования.
Интерфейс IMenuCommandService позволяет конструктору искать, добавлять, удалять или вызывать команды меню в среде разработки.
Интерфейс IReferenceService позволяет конструктору в текущем проекте, находящемся в режиме конструктора, извлекать имена объектов по ссылкам, ссылки на объекты — по именам, а также получать ссылки на родительский элемент указанного компонента и ссылки на объекты указанного типа.
Интерфейс IResourceService позволяет конструктору получать объект, производящий запись или чтение ресурсов, с указанием CultureInfo.
Интерфейс IRootDesigner позволяет конструктору заменить представление корневого конструктора представлением пользовательского конструктора. Интерфейс IRootDesigner должен быть реализован конструктором для компонента.
Интерфейс ISelectionService позволяет конструктору получать набор ссылок на выбранные в данный момент компоненты, а также задавать выбранные компоненты или их наборы и определять, является ли компонент выбранным.
Интерфейс IServiceContainer позволяет конструктору добавлять или удалять службы, которые могут быть использованы другими компонентами или конструкторами.
Интерфейс ITypeDescriptorFilterService позволяет компоненту или конструктору фильтровать атрибуты, события или свойства, предоставляемые любым компонентом во время разработки. Интерфейс ITypeDescriptorFilterService должен быть реализован как класс, который может быть добавлен в виде службы с помощью метода AddService узла компонента Site, находящегося в режиме конструктора.
Интерфейс ITypeResolutionService позволяет конструктору добавлять к проекту ссылку на сборку, извлекать тип или сборку по имени, а также получать путь указанной сборки.
Классы DesignerActionService и DesignerActionUIService реализуют функцию смарт-тегов для пользовательских конструкторов. Дополнительные сведения см. в разделе Команды конструктора и объектная модель DesignerAction для Windows Forms.
BehaviorService управляет пользовательским интерфейсом в конструкторе. Она предлагает универсальный способ управления элементами пользовательского интерфейса, например связанными с мышью событиями, командами меню и операциями перетаскивания OLE во время разработки. Дополнительные сведения см. в разделе Общие сведения о службе расширения функциональности.
Класс CodeDomComponentSerializationService выполняет сериализацию набора компонентов или сериализуемых объектов в хранилище сериализации. Дополнительные сведения см. в разделе Общие сведения о сериализации конструктора.
См. также
Задачи
Практическое руководство. Реализация преобразователя типов
Практическое руководство. Реализация редактора типов пользовательского интерфейса
Практическое руководство. Обращение к службам времени разработки
Практическое руководство. Доступ к поддержке во время разработки в Windows Forms
Основные понятия
Атрибуты и поддержка во время разработки
Команды конструктора и объектная модель DesignerAction для Windows Forms
Общие сведения о службе расширения функциональности
Общие сведения о сериализации конструктора