Создание и использование компонентов в Visual Basic

Компонент — это класс, который реализует интерфейс System.ComponentModel.IComponent или прямо либо косвенно наследуется из класса, реализующего IComponent. Компонент .NET является объектом, который можно использовать повторно, способным взаимодействовать с другими объектами, предоставляющим контроль над внешними ресурсами и поддержку во время разработки.

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

Элемент управления похож на компонент, в том смысле, что оба поддерживают проектирование. Тем не менее элемент управления предоставляет пользовательский интерфейс, а компонент — нет. Элемент управления должен быть производным от одного из базовых классов элементов управления: Control или Control.

Когда требуется создание компонента

Если ваш класс будет использоваться в области конструктора (например, конструктора Windows Forms или веб-форм), но у него отсутствует интерфейс пользователя, он должен быть компонентом и реализовывать интерфейс IComponent или быть производным от класса, который непосредственно или косвенно реализует IComponent.

Классы Component и MarshalByValueComponent являются базовыми реализациями интерфейса IComponent. Основное различие между этими классами заключается в том, что Component класс маршалируется по ссылке, в то время как IComponent маршалируется по значению. Ниже приведены общие указания по реализации.

  • Если компоненту необходимо маршалировать по ссылке, наследуется от Component.

  • Если компоненту необходимо маршалировать по значению, наследуется от MarshalByValueComponent.

  • Если компонент не может быть производным от одной из базовых реализаций из-за одиночного наследования, реализуйте IComponent.

Классы компонентов

Пространство имен System.ComponentModel предоставляет классы, используемые для реализации поведения компонентов и элементов управления во время разработки и выполнения. Это пространство имен содержит базовые классы и интерфейсы для реализации атрибутов и преобразователей типов, привязки к источникам данных и лицензирования компонентов.

Ниже перечислены основные классы компонентов.

  • Component. Базовая реализация для интерфейса IComponent. Этот класс обеспечивает совместное использование объектов несколькими приложениями.

  • MarshalByValueComponent. Базовая реализация для интерфейса IComponent.

  • Container. Базовая реализация для интерфейса IContainer. Этот класс инкапсулирует нуль или более компонентов.

Ниже приведены некоторые классы, используемые для лицензирования компонентов.

  • License. Абстрактный базовый класс для всех лицензий. Лицензия предоставляется конкретному экземпляру компонента.

  • LicenseManager. Предоставляет свойства и методы для добавления лицензии в компонент и для управления поставщиком LicenseProvider.

  • LicenseProvider. Абстрактный базовый класс для реализации поставщика лицензий.

  • LicenseProviderAttribute. Указывает класс LicenseProvider для использования с каким-либо классом.

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

  • TypeDescriptor. Предоставляет сведения о характеристиках компонента, таких как его атрибуты, свойства и события.

  • EventDescriptor. Предоставляет сведения о событии.

  • PropertyDescriptor. Предоставляет сведения о свойстве.

Разрешение вопросов, связанных с созданием элементов управления и компонентов
Способы решения распространенных проблем.

См. также