O processo de transformação do modelo de texto
O processo de transformação do modelo de texto leva a um arquivo de modelo de texto como entrada e gera um novo arquivo de texto, como a saída. Por exemplo, você pode usar modelos de texto para gerar o código de Visual Basic ou C#, ou você pode gerar um relatório em HTML.
Três componentes participam desse processo: o mecanismo, o host e processadores de diretriz. O mecanismo controla o processo; ele interage com o host e o processador de diretriz para produzir o arquivo de saída. O host fornece qualquer interação com o ambiente, como, por exemplo, a localização de arquivos e assemblies. O processador de diretriz adiciona funcionalidade, como, por exemplo, lendo dados de um arquivo XML ou um banco de dados.
O processo de transformação do modelo de texto é executado em duas etapas. Primeiro, o mecanismo cria uma classe temporária, o que é conhecida como a classe de transformação gerada. Essa classe contém o código que é gerado pelas diretivas e blocos de controle. Depois disso, o mecanismo compila e executa a classe de transformação gerado para produzir o arquivo de saída.
Componentes
Componente |
Descrição |
Personalizável (Sim/não) |
---|---|---|
Mecanismo |
O componente de mecanismo controla o processo de transformação do modelo de texto |
Não. |
Host |
O host é a interface entre o mecanismo e o ambiente do usuário. Visual Studioé um host do processo de transformação de texto. |
Sim. Você pode escrever um host personalizado. |
Processadores de diretriz |
Processadores de diretriz são classes que lidam com as diretivas nos modelos de texto. Você pode usar as diretivas para fornecer dados para um modelo de texto de uma fonte de entrada. |
Sim. Você pode escrever os processadores de diretriz personalizados |
O mecanismo
O mecanismo recebe o modelo como uma seqüência de host, que lida com todos os arquivos que são usados no processo de transformação. O mecanismo, em seguida, pede para localizar qualquer processadores de diretriz personalizadas e outros aspectos do ambiente de host. O mecanismo então compila e executa a classe de transformação gerada. O mecanismo retorna o texto gerado para o host, normalmente salva o texto em um arquivo.
O Host
O host é responsável por qualquer coisa que se relaciona com o ambiente fora do processo de transformação, incluindo o seguinte:
Localizando texto e arquivos binários solicitados pelo mecanismo de ou de um processador de diretriz. O host pode pesquisar diretórios e o cache global de assemblies localizar assemblies. O host pode localizar o código de processador de diretriz personalizada para o mecanismo. O host pode também localizar e ler arquivos de texto e retornar seu conteúdo como seqüências de caracteres.
Fornecendo listas de conjuntos de módulos padrão e namespaces são usados pelo mecanismo para criar a classe de transformação gerada.
Fornecendo o domínio de aplicativo é usado quando o mecanismo compila e executa a classe de transformação gerada. Um domínio de aplicativo separado é usado para proteger o aplicativo host de erros no código de modelo.
Gravar o arquivo de saída gerada.
Definindo a extensão padrão para o arquivo de saída gerada.
Tratamento de erros de transformação do modelo de texto. Por exemplo, o host pode exibir os erros na interface do usuário ou gravá-los em um arquivo. (Em Visual Studio, os erros são exibidos na janela de mensagem de erro.)
Se um usuário tiver chamado a uma diretiva sem fornecer um valor, fornecendo um valor de parâmetro necessário. O processador de diretriz pode especificar o nome da diretiva e o parâmetro e peça ao coordenador para fornecer um valor padrão se ele tiver um.
As diretivas e os processadores de diretiva
Uma diretiva é um comando no seu modelo de texto. Ele fornece os parâmetros para o processo de geração. Normalmente, as diretivas definem a origem e o tipo de modelo ou outra entrada e a extensão de nome de arquivo do arquivo de saída.
Um processador de diretriz pode processar as diretivas de um ou mais. Quando você transforma um modelo, você deve ter instalado um processador de diretriz pode lidar com as diretivas no seu modelo.
As diretivas funcionam, adicionando o código na classe transformation gerado. Você pode chamar diretivas de um modelo de texto e os processos de mecanismo todas as chamadas de diretivas quando ele cria a classe de transformação gerada. Depois de chamar uma diretiva com êxito, o restante do código que você escreve em seu modelo de texto pode contar com a funcionalidade que a diretiva fornece. Por exemplo, você pode fazer a chamada seguinte para o import diretiva no modelo:
<#@ import namespace="System.Text" #>
O processador de diretriz padrão converte para um using instrução em que a classe de transformação gerada. Você pode usar o StringBuilder classe no restante do seu código de modelo sem qualificá-la como System.Text.StringBuilder.