動的なソース コードの生成とコンパイル

.NET Framework には、CodeDOM (Code Document Object Model) と呼ばれるメカニズムが備わっています。CodeDOM を使用すると、ソース コードを出力するプログラム開発者は、レンダリング対象となるコードを表す単一のモデルに基づいて、実行時に複数のプログラミング言語でソース コードを生成することができます。

ソース コードを表現する CodeDOM 要素は相互にリンクされ、CodeDOM グラフと呼ばれるデータ構造体を形成します。これは、ソース コードの構造をモデル化します。

System.CodeDom 名前空間は、特定のプログラミング言語に依存せずに、ソース コードの論理構造を表すことができる型を定義します。 System.CodeDom.Compiler 名前空間は、CodeDOM グラフからソース コードを生成し、サポートされている言語でソース コードのコンパイルを管理する型を定義します。 サポート対象の言語のセットは、コンパイラの販売元および開発者が拡張できます。

言語に依存しないソース コードのモデル化は、プログラムで複数の言語のプログラム モデルのソース コードを生成する必要がある場合や、対象言語が不明な場合に役立ちます。 たとえば、その言語が CodeDOM でサポートされている場合は、デザイン時に CodeDOM を言語抽象化インターフェイスとして使用し、適切なプログラミング言語でソース コードを生成できます。

.NET Framework には、CSharpCodeProvider 用、JScriptCodeProvider 用、および VBCodeProvider 用のコード ジェネレーターとコード コンパイラが用意されています。

このセクションの内容

CodeDOM の使用方法
CodeDOM の一般的な使用方法を説明し、CodeDOM を使って簡単なオブジェクト グラフを構築する例を示します。

CodeDOM グラフからのソース コードの生成およびプログラムのコンパイル
ソース コードを生成する方法と、生成されたコードを System.CodeDom.Compiler 名前空間で定義されているクラスを使って外部コンパイラでコンパイルする方法について説明します。

方法: CodeDOM を使用して XML ドキュメント ファイルを作成する
CodeDOM を使用して XML ドキュメントのコメント付きのコードを生成する方法、および生成されたコードをコンパイルして XML ドキュメントとして出力する方法について説明します。

方法 : CodeDOM を使用してクラスを作成する
CodeDOM を使用してフィールド、プロパティ、メソッド、コンストラクター、およびエントリ ポイントを持つクラスを生成する方法を説明します。

参照

System.CodeDom
共通言語ランタイムを対象とするプログラミング言語のコード要素を表す要素を定義します。

System.CodeDom.Compiler
実行時にコードを生成およびコンパイルするためのインターフェイスを定義します。

CodeDOM クイック リファレンス
ソース コードの要素を表す CodeDOM 要素を簡単に検索するための方法が用意されています。