Dynamic Source Code Generation and Compilation
The .NET Framework includes a mechanism called the Code Document Object Model (CodeDOM) that enables developers of programs that emit source code to generate source code in multiple programming languages at run time, based on a single model that represents the code to render.
To represent source code, CodeDOM elements are linked to each other to form a data structure known as a CodeDOM graph, which models the structure of some source code.
The System.CodeDom namespace defines types that can represent the logical structure of source code, independent of a specific programming language. The System.CodeDom.Compiler namespace defines types for generating source code from CodeDOM graphs and managing the compilation of source code in supported languages. Compiler vendors or developers can extend the set of supported languages.
Language-independent source code modeling can be valuable when a program needs to generate source code for a program model in multiple languages or for an uncertain target language. For example, some designers use the CodeDOM as a language abstraction interface to produce source code in the correct programming language, if CodeDOM support for the language is available.
In This Section
- Using the CodeDOM
Describes common uses, and demonstrates building a simple object graph using the CodeDOM.
- Generating Source Code and Compiling a Program from a CodeDOM Graph
Describes how to generate source code and compile the generated code with an external compiler using classes defined in the System.CodeDom.Compiler namespace.
Describes how to use CodeDOM to generate code with XML documentation comments, and compile the generated code so that it creates the XML documentation output.
Describes how to use CodeDOM to generate a class containing fields, properties, a method, a constructor, and an entry point.
Defines elements that represent code elements in programming languages that target the common language runtime.
Defines interfaces for generating and compiling code at run time.