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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Ridurre il reflow ottimizzando il CSS
Rendere le variabili read-only in una pipeline di Azure DevOps
Evitare memory leaks nelle closure JavaScript
Utilizzare i variable font nel CSS
Configurare e gestire sidecar container in Azure App Service
Selettore CSS :has() e i suoi casi d'uso avanzati
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Creare una libreria CSS universale: Nav menu


