Выбрать главу

 Public Sub New()

  MyBase.New()

  ' Вызов метода, созданный конструктором компонентов.

  InitializeComponent()

  ' Инициализация после вызова метода

  InitializeComponent().

 End Sub

 ' Переопределение метода Dispose для очистки списка компонентов.

 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

  If disposing Then

   If Not (components Is Nothing) Then

    components.Dispose()

   End If

  End If

  MyBase.Dispose(disposing)

 End Sub

 ' Код, созданный конструктором компонентов.

 Private components As System.ComponentModel.IContainer

  ' ЗАМЕЧАНИЕ: Код, созданный конструктором компонентов.

  ' Его можно изменять только с помощью конструктора компонентов

  ' Не изменяйте его вручную в окне редактирования кода.

  <System.Diagnostics.DebuggerStepThrough()> _

   Private Sub InitializeComponent()

   components = New System.ComponentModel.Container()

  End Sub

#End Region

End Class

Более глубокое изучение иерархии наследования используемых компонентов выходит за рамки данной поэтому далее описывается лишь простой пример ее использования. Хотя в данном коде метод ToString не используется, но он применяется после компиляции вспомогательного кода. Для его применения нужно вставить в код строку Inherits System.ComponentModel.Component, которая позволяет использовать функции класса System.ComponentModel.Component, унаследованные от класса System.Object. Это наследование позволяет использовать функции данного класса без выполнения дополнительных действий.

Для компоновки нового компонента щелкните на его имени в окне Solution Explorer правой кнопкой мыши и выберите в контекстном меню команду Build. Теперь готовый компонент можно использовать, но как? Создайте Web-форму GetRowCountTest.aspx со вспомогательным кодом, который показан в листинге 12.6. Обратите внимание, что в самом начале кода используется строка импорта компонента Novelty1.GetRowCount с функциями компонента GetRowCount.

ЛИСТИНГ 12.6. Вспомогательный код GetRowCountTest.aspx.vb

Imports Novelty1.GetRowCount

Public Class GetRowCountTest Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

 ' Вызов метода, созданный конструктором компонентов.

 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

 End Sub

 Private Sub Page_Init(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles MyBase.Init

  ' CODEGEN: Этот вызов метода организован конструктором Web-форм.

  ' Не изменяйте его вручную в окне редактора кода. InitializeComponent()

 End Sub

#End Region

 Private Sub Page_Load(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles MyBase.Load

  Dim GRC As New GetRowCount()

  Response.Write(GRC.GetRowCount.ToString)

  GRC.Dispose()

 End Sub

End Class

Здесь совсем не обязательно вызывать метод Dispose, предназначенный для очистки памяти от уже не нужного объекта. Создав данную страницу и вставив в нее код, щелкните правой кнопкой мыши на ее имени в окне Solution Explorer и выберите в контекстном меню команду Build and Browse. После выполнения всех созданных сценариев и доступа к базе данных Novelty будет отображена Web-страница с числом 2000.

Использование компонента в другом приложении

Попробуем теперь использовать созданный компонент в совершенно другом приложении. Для этого нужно создать новое приложение Visual Basic .NET на основе шаблона Windows Application среды Visual Studio .NET и создать в нем ссылку на файл Novelty1.dll, который располагается в каталоге bin проекта Novelty1. При использовании компонента из другого пространства имен или другого проекта нужно помнить, что dll-файл компонента находится в каталоге bin своего проекта. Например, dll-файл Web-приложения с именем Web_приложение обычно находится в каталоге с:\inetpub\wwwroot\Web_приложение\bin.

Для указания ссылки на внешний компонент щелкните правой кнопкой мыши на элементе References в окне Solution Explorer и выберите в контекстном меню команду Add Reference. В диалоговом окне References щелкните на кнопке Browse и укажите dll-файл используемого компонента. Для закрытия диалогового окна References щелкните на кнопке OK. В данном примере предполагается, что dll-файл используемого компонента Novelty1.dll находится в каталоге c:\inetpub\wwwroot\ Novelty1\bin.

Здесь следует напомнить, что, как и при работе с прежним приложением Windows, после указания директивы Imports его пространство имен становится полностью доступным. В общем вспомогательный код Web-формы из листинга 12.7 напоминает код из листинга 12.6. Он создан на основе шаблонного кода, сгенерированного конструктором Web-форм среды Visual Studio .NET.

Листинг 12.7. Вспомогательный код Web-формы Form1.vb

Imports Novelty1.GetRowCount

Public Class Form1

 Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

 Public Sub New() MyBase.New()

  ' Этот вызов метода организован конструктором Web-форм.

  InitializeComponent()

  ' Инициализация после вызова метода InitializeComponent().