更新 : 2007 年 11 月
メタデータは、ランタイム型 (クラス、インターフェイス、および値型)、フィールド、およびメソッドを記述する場合に使用されます。また、Microsoft Intermediate Language (MSIL) の JIT コンパイル、クラスの読み込み、コードの実行、および古い COM またはネイティブ環境との相互運用を行うために共通言語ランタイム (CLR: Common Language Runtime) が使用する内部実装およびレイアウト情報を記述する場合にも使用されます。メタデータはすべての CLR コンポーネントに含まれ、ランタイム、ツール、およびサービスで使用できます。
メタデータの操作はすべて、メタデータ API を介して行われます。メタデータ API は、基になるデータ構造からクライアント (ツールおよびサービス) を分離し、ランタイム バイナリ表現、古い COM タイプ ライブラリ、および他の形式とメモリの間で透過的な転送を実行できるようにする、プラグ可能な永続形式アーキテクチャを有効にします。
メタデータ API には、メタデータを出力 (つまり生成) およびインポートするインターフェイスが含まれます。クライアントは、次の方法でメタデータを出力またはインポートできます。
コンパイラおよびツールは、"emit" API を呼び出すことでメタデータを出力します。メタデータは、コンパイルおよびリンク プロセス中に出力されます。RAD ツールは、コンポーネントまたはアプリケーションのビルドの一部としてメタデータを出力します。API メンバは、インメモリ データ構造の書き込みおよび読み込みを行います。これらのインメモリ構造は保存時に圧縮され、ターゲット コンパイル単位 (.obj ファイル)、実行可能 (.exe) ファイル、またはスタンドアロン メタデータ バイナリ ファイルにバイナリ形式で永続化されます。複数のコンパイル単位をリンクして EXE または DLL が形成される場合、"emit" API メンバは、各コンパイル単位から単一の統合されたメタデータ バイナリ ファイルにメタデータ セクションをマージするために使用されるメソッドを提供します。
ローダーとその他のランタイム ツールおよびサービスは、"import" API メンバを呼び出すことでメタデータをインポートし、読み込みやアクティベーションなどのタスクを完了できるように、コンポーネントに関する情報を取得します。
このセクションの内容
メタデータ API の概要
メタデータ API に関する一般情報を提供します。メタデータ トークンの概要
抽象化を識別するために使用されるメタデータ トークンに関する情報を提供します。メタデータ API のコーディング規則
メタデータ API で使用されるコーディング規則について説明します。メタデータ API とトークンの使用
メタデータ API を使用するクライアントに関する情報を提供し、各クライアントがメタデータ API を使用する方法について説明します。