動的なソース コードをコンパイルして生成する

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

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

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

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

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

リファレンス

  • System.CodeDom

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

  • System.CodeDom.Compiler

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