Иллюстрированный самоучитель по Architecture .NET

Изучение конкретного примера. Web-страница с информацией о гостиницах.

Чтобы в новом проекте (он расположен в каталоге Demos\AcmeWeb) воспользоваться кодом, перенесенным на C++, (этот код содержится в файле WebForml.aspx.h, хранящемся в папке CaseStudy\AcmeWeb), выполните следующие действия.

  1. Скопируйте файл WebForml.aspx.h из каталога CaseStudy\AcmeWeb в каталог Demos\AcmeWeb, в котором расположен новый проект.
  2. Откройте новый проект, если он еще не открыт. Для этого войдите в каталог Demos\AcmeWeb и дважды щелкните на файле AcmeWeb.sin.
  3. В окне поиска решения (Solution Explorer), щелкните правой кнопкой мыши на узле Header Files (Заголовочные файлы) (Этот узел находится в проекте Acme Web). Теперь из контекстного меню выберите команду Add (Добавить) и затем Add Existing Item (Добавить существующий элемент). После этого дважды щелкните левой кнопкой мыши на файле WebForml.aspx.h.
  4. Удалите файл AcmeWeb.h, который в проекте не используется. Для этого выделите этот файл в окне поиска решения (Solution Explorer) и нажмите клавишу Delete (Удалить). Поскольку файл AcmeWeb.h больше не требуется вообще, его можно удалить и из каталога \Demos\AcmeWeb. С этой целью можно использовать и Проводник Windows (Windows Explorer).
  5. Отредактируйте файл AcmeWeb.срр. Удалите директиву #include, которая включает файл AcmeWeb.h. Добавьте директиву #include, чтобы включить файл WebForml.aspx.h. Вскоре мы добавим в проект еще один заголовочный файл, который называется Global.азах.h. Включите его в текущий файл при помощи директивы #include.
// Это – основной файл динамически подключаемой библиотеки (DLL).
#include "stdafx.h"
#include "Global.asax.h"
#include "WebForml.aspx h"

Ниже приведен исходный файл WebForml.aspx.h. Обратите внимание, что для извлечения объекта HotelBroker используется статическое поле Global::hotelBroker. Вскоре мы увидим, что этот объект создается методом Application_Start объекта Global (Глобальный), который определен в исходном файле Global.asax.h.

//WebForml.aspx.h
namespace AcmeWeb
// пространство имен AcmeWeb
{
public _gc class WebForml:
public System::Web::UI::Page
// класс сборщика мусора WebForml:
// общедоступная Система::Сеть::Пользовательский
// интерфейс::Страница
{
protected: // защищенный
System::Web::UI::WebControls::Label *Labell;
System::Web::UI::WebControls::Label *Label2;
System::Web::UI::WebControls::DropDownList
*listCities; System::Web::UI::WebControls::DropDownList
*listHotels;
private: // частный
static HotelBroker *hotelBroker; // статический
public:
WebForml()
{
Page::Init += new System::EventHandler(
this, Page_Init);
}
private: // частный
void Page_Load(Object *sender, System::EventArgs *e)
{
if (HsPostBack)
{
hotelBroker = Global:rhotelBroker;
ArrayList *cities = hotelBroker › GetCities();
listCities › DataSource = cities; // города
ArrayList *hotels = hotelBroker › GetHotels;
dynamic_cast<String *> // Строка
(cities › get_Item(0))); // города
BindHotels(hotels); // гостиницы
DataBind();
}
}
};
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.