Практическое руководство. Усовершенствование контейнеров компонентов
Контейнеры компонентов полностью расширяемы. Можно наследовать их у класса Container и добавлять в них свойства или методы. Можно также добавлять пользовательские функции для установки правил и переопределять базовые методы или любые другие пользовательские функции, которые нужно включить в контейнер. Подробные сведения о контейнерах и их расширении см. в разделе Контейнеры, веб-узлы и компоненты.
Класс Container расширяется так же, как и любой базовый класс. Для этого следует создать класс, который наследует свойства базового класса, переопределить все базовые методы, которые требуется расширить, и добавить необходимые дополнительные свойства или методы. Затем новый класс можно использовать как стандартный класс Container, пользуясь любыми добавленными в него функциями.
Чтобы расширить базовый класс "Container", выполните следующие действия.
Объявите новый класс, который наследует от класса Container.
Public Class myContainer Inherits System.ComponentModel.Container End Class
class myContainer: System.ComponentModel.Container { }
class myContainer extends System.ComponentModel.Container { }
Переопределите все методы базового класса, чтобы добавить дополнительные функции. В следующем примере показан способ переопределения метода 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() ; } }
Добавьте дополнительные свойства и методы, которые нужно включить в новый контейнер.
См. также
Задачи
Практическое руководство. Создание контейнеров компонентов