Книга: C# для профессионалов. Том II

Диалоговое окно ссылок

Диалоговое окно ссылок

Прежде чем погружаться в тонкости вопросов взаимодействия с унаследованными объектами COM, давайте кратко обсудим, как достичь такого взаимодействия. Наше объяснение строится с точки зрения IDE VS.NET, так как большинство читателей будут использовать его для написания своих программ C#, но альтернативные редакторы могут предоставить свои собственные эквивалентные методы.

Для этого понадобиться использовать диалоговое окно ссылок (References Dialog), которое доступно из пункта меню Add Reference… в меню Project IDE Visual Studio.NET. Это диалоговое окно имеет три вкладки, первая из которых просто перечисляет DLL, которые являются вспомогательными, но при этом очень важными для среды времени выполнения платформы .NET.


Самая правая вкладка, Projects, перечисляет все проекты .NET, на которые ссылаются в данном решении. На следующем экране, например, клиентское приложение C# для онлайновых заказов опирается на несколько проектов библиотек классов C#, которые реализуют бизнес-правила. (Конечно, они не обязаны быть проектами C#, чтобы на них ссылался клиент C#, они могут также легко быть проектами VB.NET. Фактически, один клиент .NET может одновременно ссылаться на проекты компонентов на нескольких различных языках платформы .NET).


Средняя вкладка, COM, является вкладкой для импортирования компонентов COM в проекте .NET.


В верхнем правом углу диалогового окна имеется кнопка Browse. При нажатии на эту кнопку появится другое диалоговое окно, которое позволит найти в файловой системе DLL COM, требующиеся проекту .NET:


Когда файл будет найден, добавляем его в список компонентов в панели формы COM:


После использования диалогового окна ссылок для нахождения DLL COM и добавления библиотеки к списку ссылок COM, можно использовать компонент COM в коде .NET. VS.NET создает пространство имен с таким же именем, как и у исходного компонента COM, и классы этого компонента COM помещаются в это пространство имен. Ссылки, создание экземпляров и вызов оболочки объекта COM производятся с таким же синтаксисом, как и у собственных объектов C#.

Посмотрим на следующий пример кода. В нем определен метод для добавления нового заказчика в базу данных. В качестве аргумента ввода этот метод получает ссылку на объект CustomerInfo, поля которого содержат имя определенного заказчика, код социального обеспечения, и т.д. Экземпляр класса доступа к данным CustomerTable создается из компонента COM и используется для вставки информации о заказчике в базу данных. В этом примере важно то, что код, связанный с объектом COM, является кодом обыкновенного объекта C#. Мы создаем экземпляр оболочки .NET и позволяем ему делегировать свою работу реальному объекту COM за сценой:

/// <summary>
/// Этот код добавляет нового заказчика в базу данных,
/// обеспечивая при этом выполнение бизнес-правил.
/// </summary>
public long AddNewCustomer(CustomerInfo objCustomerInfo) {
 long lngNewCustomerID;
 DataAccess.CustomerTable objCustomerTable;
 // Добавить запись в таблицу заказчиков.
 objCustomerTable = new DataAccess.CustomerTable();
 lngNewCustomerID =
  objCustomerTable.InsertRecord(
  objCustomerInfo.LastName, objCustomerInfо.FirstName,
  objCustomerInfo.MiddleName, objCustomerInfo.SocialSecurityNumber);

Конечно, если надоест вводить пространство имен компонента COM, то инструкция using в начале каждого файла позволит сослаться на классы в оболочке компонента COM с помощью сокращенных, относительных имен:

// Размещение следующей инструкции в начале файла ...
using DataAccess;
// позволяет ссылаться на классы DataAccess по их относительным именам
CustomerTable objCustomerTable;
objCustomerTable = new CustomerTable();

IDE VS.NET будет даже использовать Intellisense, чтобы помочь запомнить членов класса компонента:


Intellisense поможет также с членами данных и списком аргументов.

Оглавление книги


Генерация: 0.191. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз