Utilizzare il motore T4 di Visual Studio per generare una classe C#

di , in .NET Framework,

Come visto nello script #468, il motore di T4 di Visual Studio permette di creare qualunque tipo di file da una qualunque sorgente. In questo caso vediamo compe creare una classe C# partendo da una lista di stringhe.

<#@ template debug="true" language="C#" #>  
<#@ output extension=".cs" #>  

<# var properties = new string [] {"Nome", "Cognome", "Indirizzo"}; #>  

// static code 
class MyClass 
{  

<# // executed code:  
  foreach (string propertyName in properties)  { #>  
    // Generated code:  
    private string <#= propertyName #> { get; set; }  
<# } #>  
}


Ci sono diverse cose da notare in questo esempio. Innanzitutto, tramite la direttiva template (identificata dai marcatori di blocco <#@ #>) specifichiamo che possiamo eseguire il debug del template (attributo debug) e che il template usa il linguaggio C# (attributo language).
La seconda cosa da notare è che l'estensione del file è .cs quindi il template genera un file C#.
Passando al codice, viene creato un array di stringhe che rappresentano i nomi delle proprietà che vogliamo aggiungere a una classe. Questo codice viene eseguito a run time dal template quando lo lanciamo. Successivamente viene aggiunto al file la dichiarazione della classe e poi si rientra in un contesto di esecuzione di codice del template per generare una proprietà per ogni stringa dell'array creato in precedenza. Infine si esce dal codice di esecuzione e si chiude la classe.

Una volta lanciato il file, il template produce il seguente output.

class MyClass 
{  
  private string Nome { get; set; }
  private string Cognome { get; set; }  
  private string Indirizzo { get; set; }
}

Commenti

Visualizza/aggiungi commenti

Utilizzare il motore T4 di Visual Studio per generare una classe C# (#470)
| Condividi su: Twitter, Facebook, LinkedIn, Google+

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi