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
Utilizzare Containers in .NET Aspire
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Integrare un servizio esterno con .NET Aspire
Eseguire query in contemporanea con EF
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Gestire codice JavaScript con code splitting e lazy loading
Ridurre il reflow ottimizzando il CSS
Gestione dei nomi con le regole @layer in CSS
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Anonimizzare i dati sensibili nei log di Azure Front Door
Configurare automaticamente un webhook in Azure DevOps
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Tutorial LINQ
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Invocare trigger non HTTP delle Azure Function durante lo sviluppo
- Utilizzare i variable font nel CSS