Compilare e generare codice sorgente dinamico

.NET include un meccanismo denominato CodeDOM (Code DOCUMENT Object Model) che consente agli sviluppatori di programmi che generano codice sorgente in più linguaggi di programmazione in fase di esecuzione, in base a un singolo modello che rappresenta il codice di cui eseguire il rendering.

Per rappresentare il codice sorgente, gli elementi CodeDOM vengono collegati tra loro per formare una struttura di dati nota come grafico CodeDOM che modella la struttura del codice sorgente.

Lo spazio dei nomi System.CodeDom definisce i tipi che possono rappresentare la struttura logica del codice sorgente, in modo indipendente da un linguaggio di programmazione specifico. Lo spazio dei nomi System.CodeDom.Compiler definisce i tipi per la generazione di codice sorgente a partire dai grafici CodeDOM e la gestione della compilazione del codice sorgente nei linguaggi supportati. I produttori di compilatori o gli sviluppatori possono estendere il set di linguaggi supportati.

La modellazione di codice sorgente indipendente da uno specifico linguaggio si rivela particolarmente utile quando occorre che un programma generi codice sorgente per un modello di programma in più linguaggi o in un linguaggio di destinazione non ancora definito. Alcuni progettisti usano ad esempio CodeDOM come interfaccia indipendente dal linguaggio per produrre codice sorgente nel linguaggio di programmazione desiderato, ove sia disponibile il supporto CodeDOM per il linguaggio.

.NET include generatori di codice e compilatori di codice per CSharpCodeProvider, JScriptCodeProvidere VBCodeProvider.

Riferimento

  • System.CodeDom

    Definisce elementi che rappresentano elementi di codice in linguaggi di programmazione che si avvalgono del Common Language Runtime.

  • System.CodeDom.Compiler

    Definisce le interfacce per la generazione e la compilazione di codice in fase di esecuzione.

  • CodeDOM Quick Reference offre agli sviluppatori un modo rapido per trovare gli elementi CodeDOM che rappresentano gli elementi del codice sorgente.