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
Gestire domini wildcard in Azure Container Apps
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Eseguire una query su SQL Azure tramite un workflow di GitHub
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Criptare la comunicazione con mTLS in Azure Container Apps
Miglioramenti nelle performance di Angular 16
Gestione dei nomi con le regole @layer in CSS
Generare un hash con SHA-3 in .NET
Eseguire script pre e post esecuzione di un workflow di GitHub
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Miglioramenti nell'accessibilità con Angular CDK
Utilizzare il nuovo modello GPT-4o con Azure OpenAI