Compile and generate dynamic source code

.NET 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.

.NET includes code generators and code compilers for CSharpCodeProvider, JScriptCodeProvider, and VBCodeProvider.


  • System.CodeDom

    Defines elements that represent code elements in programming languages that target the common language runtime.

  • System.CodeDom.Compiler

    Defines interfaces for generating and compiling code at run time.

  • CodeDOM Quick Reference provides a quick way for developers to find the CodeDOM elements that represent source code elements.