Поделиться через


инициализация конструктора и конфигурация метаданных

Управление метаданными и атрибутов фильтра, связанных с конструктором или компонентом конструктора предоставляет механизм для приложений определить, какие инструменты используются указанным конструктором для обработки другую Type объекты (например, структуры данных или графические классы, когда конструктор сущностей), и доступен в качестве среды разработки Visual Studio настроена для поддержки конструктор (например, Панель элементов категория или на вкладку доступные).

SDK для Visual Studio предоставляет несколько механизмов, чтобы упростить элемент управления инициализации компонента конструктора или конструктора и обработку его метаданных VSPackage.

Инициализировать метаданные и данные конфигурации

Так как они загружаются по запросу, VSPackages не может быть загружен Visual Studio среда до создания экземпляра конструктора. Поэтому VSPackages не может использовать стандартный механизм для настройки конструктор или компонент конструктора при его создании, обрабатывать a DesignerCreated событие. Вместо этого VSPackage реализует экземпляр DesignSurfaceExtension интерфейс и регистрируется для задания настроек именованных расширения области конструктора.

Настраивать инициализация

Настройка конструктора, компонент или область конструктора, включают:

  1. Изменение метаданные конструктора и эффективно изменение, как уверенное Type осуществляет доступ или преобразован.

    Обычно это делается с помощью UITypeEditor OR TypeConverter механизмы.

    Например, если System.Windows.Forms- инициализированы на основе конструкторы Visual Studio среда изменяет UITypeEditor для Image объекты, используемые с конструктором для использования диспетчера ресурсов получить растровые изображения, а не " файловая система ".

  2. Интегрирующ с средой, например, подписка на события или получения информации о конфигурации проекта. Можно получить сведения о конфигурации проекта и подписаться на события, получая ITypeResolutionService интерфейс.

  3. Изменение среды пользователя, активировать соответствующий Панель элементов категории или путем ограничения применимость конструктора, применяя экземпляр ToolboxItemFilterAttribute класс в конструктор.

Инициализация разработки VSPackage

VSPackage, должно обрабатывать инициализацию конструктора:

  1. Создание реализации объекта DesignSurfaceExtension класс.

    Примечание

    DesignSurfaceExtension класс должен быть реализован ни в одном объекте как Package класс.

  2. Зарегистрируйте реализация класса DesignSurfaceExtension например, предоставляя поддержку расширений конструктора VSPackage, применяя экземпляров DesignSurfaceExtensionAttribute" ProvideObjectAttribute и ProvideServiceAttribute к классу указав реализацию VSPackage Package.

Если какие-либо конструктор или компонент конструктора создаются, Visual Studio среда.

  1. Обращается к каждый зарегистрированный поставщик расширений области конструктора.

  2. Создает и инициализируют экземпляр каждого поставщика расширения области конструктора DesignSurfaceExtension object

  3. Вызывает каждый поставщик расширений области конструктора OnDesignerCreated метод или OnComponentCreated метод (соответственно).

При реализации DesignSurfaceExtension объект как элемент VSPackage, важно понимать, что:

  1. Visual Studio среда не предоставляет элемент управления с какими метаданными или другими параметрами конфигурации конкретная область DesignSurfaceExtension поставщик изменяет. Возможно, что два или более DesignSurfaceExtension поставщики изменение одной и той же функции конструктора в конфликтующие образом, при конечное изменение окончательны. Он не определен, в котором изменения применяются в последний раз.

  2. Возможно явно ограничения реализации DesignSurfaceExtension объект к определенному конструкторам, применяя экземпляров ToolboxItemFilterAttribute в этой реализации. Дополнительные сведения Панель элементов элемент фильтрации, cм. ToolboxItemFilterAttribute и ToolboxItemFilterType.

Дополнительный предоставить метаданных

VSPackage может изменить конфигурацию конструктора или компонента конструктора, за исключением во время разработки.

ProvideDesignerMetadataAttribute класс можно использовать программно или был применен к VSPackage, предоставляющий конструктор.

Экземпляр ProvideDesignerMetadataAttribute класс используется для изменения метаданных компонентов, созданных в рабочей области конструирования. Например, он может заменить обозреватель свойств по умолчанию, используемый by CommonDialog объекты с обозревателем пользовательского свойства.

Изменения, представленные экземпляром ProvideDesignerMetadataAttribute применяется к реализации VSPackage Package может иметь одну из 2 областей:

  • Везде -- для всех новых экземпляров заданного компонента

  • Локальная -- pertaining только к экземпляру компонента, созданного в области конструктора, представленной текущим VSPackage.

IsGlobal свойство ProvideDesignerMetadataAttribute экземпляр, примененный к реализации VSPackage Package определяет эту область.

Применить атрибут к реализации Package с IsGlobal свойство ProvideDesignerMetadataAttribute набор объектов trueнапример, ниже, изменяет браузер для всей Visual Studio среда.

       [ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=true)]

       internal class MyPackage : Package {}

Если пометить было установлено falseизменение метаданных, затем локальную на текущий конструктор поддерживаемый текущим VSPackage.

       [ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=false)]

       internal class MyPackage : Package {}

Примечание

В данный момент область конструктора поддерживает только создать компоненты, поэтому только компоненты могут иметь локальные метаданные.В приведенном выше примере мы пытали изменить свойство, например Color свойство объекта.If false пометить для глобального, в прошл CustomBrowser никогда не появил поскольку конструктор не фактически создается экземпляр Color.Установка пометить к глобальным false необходимые компоненты, такие как элементы управления, таймеры и диалоговые окна.

См. также

Ссылки

DesignSurfaceExtension

DesignSurfaceExtensionAttribute

ToolboxItemFilterType

Другие ресурсы

Расширение поддержки времени разработки