Indentare correttamente il codice in un template T4 di Visual Studio

di Stefano Mostarda, in .NET Framework,

Quando generiamo un file tramite il motore di templating di Visual Studio, una delle cose più ostiche è la gestione dell'indentazione del codice. Infatti capita dfi ritrovarsi generato del codice perfettamente valido, ma indentato in un modo incomprensibile. Per eliminare il problema, possiamo prendere il controllo completo sull'indentazione utilizzando i metodi PushIndent e PopIndent, WriteLine. Il primo metodo un livello di indentazione, il secondo elimina un livello di indentazione e il terzo metodo scrive sull'output utilizzando l'attuale livello di indentazione.

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>

<#
WriteLine(CurrentIndent + "class Person {");
PushIndent("  ");
WriteLine(CurrentIndent + "public void Greet() {");
PushIndent("  ");
WriteLine(CurrentIndent + "// code");
PopIndent();
WriteLine(CurrentIndent + "}");
PopIndent();
WriteLine(CurrentIndent + "}");
#>

In questo esempio creiamo la prima riga della classe Person senza alcuna indentazione. Successivamente aggiungiamo un'indentazione di due caratteri e creiamo il metodo Greet che verà quindi indentato correttamente così come il suo contenuto sottoposto a un'ulteriore indentazione. Infine, eliminiamo un'indentazione e chiudiamo il metodo, eliminiamo un'altra indentazione e chiudiamo la classe. Il risultato finale è il seguente.

class Person {
  public void Greet() {
    // code
  }
}

Se vogliamo ripulire tutte le indentazioni in un colpo solo, possiamo utilizzare il metodo ClearIndent.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

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

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi