Объекты в Outlook PIA
При просмотре основной сборки взаимодействия Outlook (PIA) в обозревателе объектов можно заметить, что имена многих интерфейсов и классов ссылаются на знакомые объекты в объектной модели Outlook. Некоторые объекты в объектной модели взаимно однозначно сопоставлены интерфейсам в PIA.
Например, AddressEntry сопоставляется интерфейсу AddressEntry , а объект AddressList сопоставляется интерфейсу AddressList в PIA.
Но большинство других объектов сопоставляются PIA как один-ко-многим. Это сопоставление один-ко-многим применяется к некоторым объектам, существовавшим до Microsoft Office Outlook 2007, и всем объектам, добавленным, начиная с версии Outlook 2007. В этом разделе перечислены все типичные интерфейсы, классы и делегаты .NET, сопоставленные объекту COM, и описывается получение доступа к объекту в Outlook PIA. Здесь также описываются некоторые исключения в Outlook PIA, в которых имеются скрытые объекты или устаревшие в объектной модели на основе COM.
Объекты модуля поддержки
В этом разделе на примере использования объекта FormRegion показываются типичные классы модуля поддержки для объекта в Outlook PIA. Объект FormRegion был добавлен в объектную модель в Outlook 2007. С объектом FormRegion в PIA связаны интерфейсы, классы и делегаты, показанные на рисунке 1.
Рис. 1. Объект FormRegion, представленный в объектной модели Outlook и в Outlook PIA
Интерфейсом, который чаще всего используется для доступа к объекту FormRegion и его членам методам, свойствам и событиям, является интерфейс FormRegion . Однако не следует рассматривать интерфейс FormRegion .NET как точный зеркало изображение COM-объекта FormRegion. Если вы посмотрите на обозреватель объектов в Visual Studio, вы обнаружите, что интерфейс FormRegion наследует от другого интерфейса, _FormRegion. Фактически, интерфейс FormRegion является одним из нескольких интерфейсов и классов, появившихся в результате создания Outlook PIA на основе библиотеки типов COM.
Чтобы создать Outlook PIA, Outlook использует программу импорта библиотек типов (TLBIMP) в .NET Framework для преобразования определений типов библиотеки типов COM в эквивалентные определения в сборке CLR. В COM объект FormRegion фактически является компонентным классом, состоящим из двух следующих интерфейсов, определяющих интерфейсы, реализуемые объектом FormRegion:
Основной интерфейс _FormRegion
Интерфейс событийFormRegionEvents
TLBIMP непосредственно импортирует _FormRegion и FormRegionEvents из библиотеки типов.
Кроме импорта основного интерфейса и интерфейса событий, TLBIMP создает интерфейс .NET с тем же именем, что и у COM-объекта, и класс .NET, использующий имя объекта с дополнением "Class". В случае объекта FormRegion TLBIMP создает следующее.
Интерфейс .NET FormRegion
Класс .NET FormRegionClass
Из создаваемых TLBIMP интерфейсов .NET и класса .NET, упоминаемых в этом разделе, для доступа к объекту всегда используется интерфейс .NET. Например, для доступа к объекту FormRegion в VB всегда используется интерфейс FormRegion, как показано в следующем примере кода.
Imports Outlook = Microsoft.Office.Interop.Outlook
Sub DemoFormRegion(ByVal Region As Outlook.FormRegion)
Dim MyFormRegion As Outlook.FormRegion = Region
' Additional method code here
End Sub
using Outlook = Microsoft.Office.Interop.Outlook;
void DemoFormRegion(Outlook.FormRegion region)
{
Outlook.FormRegion myFormRegion = region;
// Additional method code here
}
Сведения о назначении основного интерфейса и класса .NET, которые TLBIMP импортирует и создает соответственно, см. в статье Методы и свойства в Outlook PIA. Сведения о назначении связанных с событиями интерфейсов, делегатов и классов модуля поддержки приемника см. в статье События в Outlook.
Устаревшие объекты
Объекты, устаревшие в библиотеке типов, показаны в Outlook PIA. Например, объекты _DDocSiteControl и _DRecipientControl скрыты в библиотеке типов, но показаны в PIA.
Другим примером устаревшего объекта является объект MAPIFolder. Начиная с Outlook 2007, объект Folder заменил в объектной модели объект MAPIFolder. Существующие решения должны заменить ссылки на MAPIFolder на Folder, а все новые решения для Outlook 2007 и последующих версий должны использовать объект Folder. Для неуправляемых решений в обозревателе объектов редактора Visual Basic объект MAPIFolder больше не показывается, даже как скрытый объект.
Для управляемых решений, несмотря на то, что в Outlook PIA показывается интерфейс Folder , используемый для доступа к объекту Folder и его членам, в Outlook PIA показывается и MAPIFolder как интерфейс, определяющий члены объекта Folder.