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
Creare un webhook in Azure DevOps
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Creare una libreria CSS universale: Clip-path
Loggare le query più lente con Entity Framework
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Gestire i dati con Azure Cosmos DB Data Explorer
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Creare una libreria CSS universale: Immagini
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API