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


Практическое руководство. Усовершенствование контейнеров компонентов

Контейнеры компонентов полностью расширяемы. Можно наследовать их у класса Container и добавлять в них свойства или методы. Можно также добавлять пользовательские функции для установки правил и переопределять базовые методы или любые другие пользовательские функции, которые нужно включить в контейнер. Подробные сведения о контейнерах и их расширении см. в разделе Контейнеры, веб-узлы и компоненты.

Класс Container расширяется так же, как и любой базовый класс. Для этого следует создать класс, который наследует свойства базового класса, переопределить все базовые методы, которые требуется расширить, и добавить необходимые дополнительные свойства или методы. Затем новый класс можно использовать как стандартный класс Container, пользуясь любыми добавленными в него функциями.

Чтобы расширить базовый класс "Container", выполните следующие действия.

  1. Объявите новый класс, который наследует от класса Container.

    Public Class myContainer
       Inherits System.ComponentModel.Container
    End Class
    
    class myContainer: System.ComponentModel.Container
    {
    }
    
    class myContainer
       extends System.ComponentModel.Container
    {
    }
    
  2. Переопределите все методы базового класса, чтобы добавить дополнительные функции. В следующем примере показан способ переопределения метода Add.

    Примечание

    Класс Container фактически содержит две перегрузки метода Add, и в этом примере нужно переопределить каждую из них.

    ' Because Add is overloaded, this line includes the Overloads keyword.
    Public Overloads Overrides Sub Add(ByVal component As _
       System.ComponentModel.IComponent)
       ' Determines if the component can be added to the container.
       If TypeOf component Is Widget Then
          ' Calls the base Add function to add the component.
          MyBase.Add(component)
       Else
          ' Throws an exception.
          Throw New NonWidgetException()
       End If
    End Sub
    
    public override void Add(System.ComponentModel.IComponent component)
    {
       if (component is Widget)
          base.Add(component);
       else 
       {
          throw(new NonWidgetException());
       }
    }
    
    public void Add(System.ComponentModel.IComponent component)
       throws NonWidgetException
    {
       if ( component instanceof Widget  ) {
          super.Add(component);
       }
       else
       {
          throw new NonWidgetException() ;
       }
    }
    
  3. Добавьте дополнительные свойства и методы, которые нужно включить в новый контейнер.

См. также

Задачи

Практическое руководство. Создание контейнеров компонентов

Ссылки

Container

Основные понятия

Контейнеры, веб-узлы и компоненты

Связь между контейнерами и компонентами