次の方法で共有


(2) 単純なコンポーネント ベース アプリケーション

もちろん、前述した Hello World アプリケーションは非常に単純な例であり、実際のプログラムは、通常、もう少し複雑です。そこで、ここでは、コンポーネント ベースのプログラムを考察します。このプログラムの詳細については、「.NET Framework を使用した開発の概要」というチュートリアルを参照してください。この新しいプログラムは、2_Simple サブディレクトリにあります。このプログラムでは、Client.exe を使用して、1 つのコンポーネント (Stringer.dll) に含まれている型だけに対してメソッドを呼び出します。Stringer.cs に含まれている Stringer コンポーネントのコードには、重要なステートメントがいくつか含まれており、その最初のステートメントは、コンポーネントに含まれている型のグローバル名前空間における位置を指定しています。

namespace org {...}

ここでも、クラスを作成する必要があります。

public class Stringer {...}

このクラスは、単一のフィールド (StringsSet)、コンストラクタ (Stringer、クラス名と同じ名前)、定義されたメソッド (GetString)、およびプロパティ (Count) を保持し、対応するプロパティ アクセサ (get_Count) がコンパイラによって自動的に作成されます。

private string[] StringsSet; 
public Stringer() {...}
public string GetString(int index) {...}
public int Count {
       get { return StringsSet.Length; }
}

クライアント プログラムは、これらを 1 つにまとめることによって、org.Stringer.GetString のように、GetString メソッドへの参照を完全に限定します。

コンパイルされたコンポーネントの Ildasm.exe 表示には、すべてのメンバが示されます。

このクライアント プログラムには 2 つ目の using ステートメントが含まれており、このステートメントは、Stringer.dll (コードは Client.cs 内) の型に簡単にアクセスできるように、名前空間を指定します。

using org;

このプロジェクトのファイルは、簡単にビルドできます。まず、Stringer.dll コンポーネントをビルドします。次に、Client.exe をビルドし、名前空間の名前 (この場合は、org) ではなく、マニフェストを含むファイルの名前を使用して、コンポーネントをインポートします。

csc /target:library ... Stringer.cs
csc /reference:Stringer.dll ... Client.cs

Hello.exe の場合と同様に、新しい Client.exe ファイルには、そのファイル自体、.NET Framework クラス ライブラリ、およびそのファイルが使用する型に関するマニフェスト情報が含まれています。しかし、このファイルには、Stringer コンポーネントと、そのコンポーネントに含まれていて、他から参照される型 (この場合は org.Stringer) に関する情報も含まれます。

**メモ   **このクライアント プログラムはプライベート アセンブリを使用するため、バージョン情報はチェックされません。

Stringer コンポーネントのマニフェスト情報を次の図に示します。

この例では、DLL だけでアセンブリ全体を構成しています。ただし、常にそのような構成になるとは限りません。たとえば、開発シナリオによっては、複数の言語で作成された DLL を組み合わせて 1 つのアセンブリにする必要が生じる場合があります。また、複数の DLL を組み合わせて 1 つのアセンブリを生成し、コンポーネント間でメソッドにアクセスできるようにすると同時に、そのアクセスをアセンブリ内部に限定できるような特別なスコープ規則を利用する場合もあります。このような場合は、「付録 B: パッケージ化および配置用のツール」で説明されているアセンブリ リンカ (Al.exe) を使用して、アセンブリをカスタマイズできます。

参照

コンポーネント ベース アプリケーションの配置 | (3) プライベート コンポーネントのパス | (4) 共有コンポーネント | (5) コンポーネントのバージョン管理 | パッケージ化と配置の要約 | 付録 A: パッケージ化および配置の追加情報 | 付録 B: パッケージ化および配置用のツール