Outlook PIA でのメソッドとプロパティ
ここでは、Outlook プライマリ相互運用機能アセンブリ (PIA) を使用してマネージ コードのオブジェクトのメソッドとプロパティにアクセスする方法を説明します。
ヘルパー オブジェクトの由来
Outlook PIA を作成するため、Outlook は .NET Framework のタイプ ライブラリ インポーター (TLBIMP) を使用して、COM タイプ ライブラリでの型定義を共通言語ランタイム (CLR) アセンブリでの同等の定義に変換します。 COM では、オブジェクトは実際には以下のもので構成されるコクラスです。
プライマリ インターフェイス (例: _FormRegion インターフェイス)
イベント インターフェイス (例: FormRegionEvents インターフェイス)
TLBIMP は、各オブジェクトのプライマリ インターフェイスとイベント インターフェイスをインポートし、複数のインターフェイス、デリゲート、およびクラスを作成します。その中には次のものが含まれます。
.NET イベント インターフェイス (例: FormRegionEvents_Event インターフェイス)
.NET クラス (例: FormRegionClass クラス)
.NET インターフェイス (例: FormRegion インターフェイス)。
ヘルパー オブジェクトの対象
FormRegion オブジェクトを引き続き例として使用し、次のリストでは前に示した各インターフェイスとクラスに含まれるものを説明します。
_FormRegion インターフェイスでは、 FormRegion のすべてのメソッドとプロパティが定義されています。 通常、後で説明する場合を除き、このインターフェイスをコードで使用することはありません。
FormRegionEvents インターフェイスは、FormRegion のイベントへのメソッドのマッピングを定義します。 このインターフェイスはコードでは使用しません。
TLBIMP は FormRegionEvents インターフェイスをさらに処理して 、FormRegionEvents_Event インターフェイスを作成し、FormRegion のすべてのイベントを定義します。 通常、後で説明する場合を除き、このインターフェイスをコードで使用することはありません。
FormRegionClass クラスでは、 FormRegion のすべてのメソッド、プロパティ、およびイベントが定義されています。 このクラスにより FormRegion インターフェイスが裏側で関連付けられて、 FormRegion インターフェイスのインスタンスを作成するためのコードを記述できます。 ただし、コードでこのインターフェイスを直接使用することはありません。
FormRegion インターフェイスは、_FormRegion インターフェイスと FormRegionEvents_Event インターフェイスを継承します。 図 1 はこの継承関係を示したものです。
図 1. _FormRegion インターフェイスからメソッドとプロパティを継承し、FormRegionEvents_Event インターフェイスからイベントを継承する FormRegion インターフェイス
通常、FormRegion は、マネージ コードで FormRegion オブジェクトのオブジェクトとメソッド、プロパティ、およびイベント メンバーへアクセスするために使用されるインターフェイスです。
別の例として Application オブジェクトを使用すると、 Application オブジェクト、メソッド、プロパティ、およびイベントには、 Application インターフェイスを介してアクセスします。 ただし、以下の 3 つの例外的状況では、別のインターフェイスを使用する必要があるか、または言語によっては別のインターフェイスを使用した方がよい場合があります。
イベントと同じ名前を共有するメソッドにアクセスするときは、プライマリ インターフェイスにキャストしてメソッドを呼び出すのがよい方法です。 たとえば、Application オブジェクトには Quit メソッドと Quit イベントがあります。 Visual Basic .Net では、アプリケーションのインターフェイス経由で Quit メソッドにアクセスできます。 C# では、次のコード サンプルに示すように、Quit メソッドをプライマリ インターフェイスにキャストすることで、コンパイラの警告を回避できます。
void DemoApp() { Outlook.Application myApp = new Outlook.Application(); // Other application code here ((Outlook._Application)myApp).Quit(); }
そのオブジェクトのメソッドと同じ名前を共有するイベントにアクセスするときは、適切なイベント インターフェイスにキャストしてイベントに接続する必要があります。 前の例と同じように、 Quit イベントに接続するには、 ApplicationEvents_11_Event インターフェイスにキャストします。
以前のバージョンのイベントで、後のバージョンの Outlook において拡張されているものに接続するときは、前のインターフェイスのバージョンのイベントに接続する必要があります。 たとえば、最新バージョンではなく、Outlook 2002 用に実装されている Application オブジェクトの Quit イベントのバージョンに接続する場合は、ApplicationEvents_11_Event インターフェイスで定義されている Quit イベントではなく、ApplicationEvents_10_Event インターフェイスで定義されている Quit イベントに接続します。