Faça seu Gerador de Código com o T4 do Visual Studio


Tenho visto poucos arquitetos utilizando uma tecnologia interessante para gerar código de acordo com templates e que já está embutida no Visual Studio, sejam 2005, 2008 ou 2010.


Trata-se do T4 (Text Template Transformation Toolkit) Code Generation. Ele está contido no Visual Studio SDK e pode ser usado para gerar um código de acordo com um template que você ou seu time escreve.


Pense nele como a metade de uma infraestrutura para um gerador de código.


Um gerador completo costuma ter duas partes: a primeira é a responsável pela leitura dos metadados de uma especificação ou modelo; a segunda é a que lê estes metadados e gera algum artefato (código, html, etc.) a partir destes.


O Visual Studio SDK já vem com o Domain Specific Language Tools onde você pode especificar uma DSL visual (o Carlos Hulot falou muito disto no seu blog) e utilizar dentro dos templates T4 um conjunto de classes que permitem ler estes metadados para gerar o código correspondente.


Mas o DSL do SDK é um pouco complexo e você pode precisar de algo bem mais simples. Saiba que você pode construir seu próprio parser ou mero formulário para dar a entrada dos metadados que o template T4 usará para gerar seu código. Por exemplo, você pode fazer uma biblioteca para ler os metadados de um banco de dados e colocá-los a disposição para o template T4 percorrê-los gerando, por exemplo, classes com seus campos - como o Entity Framework faz.


Como exemplo, veja a figura abaixo.


image


Nela, você pode ver código que será rodado pelo template para gerar código (ele está sempre entre <# #> ). Em especial, o código no bloco que começa com <#+ é uma função de ajuda que retira espaços de dentro de strings e é utilizado no bloco logo abaixo para gerar strings do nome das cidades sem espaços. Textos fora dos blocos <# #> são copiados diretamente para o arquivo de saída.


Quando abrimos o arquivo gerado (genclass.cc) deste exemplo encontramos o seguinte texto:



Cidades sem " " entre nomes
NewYork
London
Seattle
SanFrancisco
NewDelhi


Simples, não é?


Existe um post ótimo do Scott Hanselmann que dá vários links interessantes sobre o assunto.


Fica a dica: se você está querendo trabalhar com MDD e pensa em fazer seu próprio gerador, dê uma olhada no T4!


Abraços


(Dica 2: pense no Oslo como o parser e o T4 como gerador)

Comments (1)
  1. Realmente os T4 são uma mão na roda, estou usando muito nesse último mÊs !!!

Comments are closed.

Skip to main content