Criação de processadores de diretiva de modelo personalizado T4 texto
O processo de transformação do modelo de texto leva um modelo de texto arquivo como entrada e produz um texto de arquivo como a saída.O mecanismo de transformação do modelo de texto o processo e o mecanismo interage com um host de transformação do modelo de texto e o modelo de texto de um ou mais controles de processadores de diretriz para concluir o processo.Para obter mais informações, consulte O processo de transformação do modelo de texto.
Para criar um processador de diretriz personalizado, você pode criar uma classe que herda a partir de um DirectiveProcessor ou RequiresProvidesDirectiveProcessor.
A diferença entre os dois é que DirectiveProcessor implementa a interface mínima que é necessária obter os parâmetros do usuário e para gerar o código que produz o arquivo de saída do modelo.RequiresProvidesDirectiveProcessorimplementa o padrão de design requer/fornece.RequiresProvidesDirectiveProcessorlida com dois parâmetros especiais, requires e provides.Por exemplo, um processador de diretriz personalizado pode aceitar um nome de arquivo do usuário, abrir e ler o arquivo e, em seguida, armazenar o texto do arquivo em uma variável chamada fileText.Uma subclasse da RequiresProvidesDirectiveProcessor classe pode levar um nome de arquivo do usuário como o valor da requires parâmetro e o nome da variável para armazenar o texto como o valor da provides parâmetro.Este processador seria abrir e ler o arquivo e, em seguida, armazenar o texto do arquivo na variável especificada.
Antes de chamar um processador de diretriz personalizado em um modelo de texto no Visual Studio, você deve registrá-lo.
Para obter mais informações sobre como adicionar a chave do registro, consulte Implantação de um processador de diretiva personalizada.
Diretivas personalizadas
Uma diretiva personalizada tem esta aparência:
<#@ MyDirective Processor="MyDirectiveProcessor" parameter1="value1" … #>
Você pode usar um processador de diretriz personalizado quando você deseja acessar dados externos ou recursos a partir de um modelo de texto.
Modelos de texto diferentes podem compartilhar a funcionalidade que um único processador de diretriz fornece, para que os processadores de diretriz oferecem uma forma de código do fator para reutilização.Interno include diretiva é semelhante, porque você pode usá-lo para decompor o código e compartilhá-las entre os modelos de texto diferente.A diferença é que qualquer funcionalidade que o include diretiva fornece é fixo e não aceita parâmetros.Se você desejar fornecer a funcionalidade comum para um modelo de texto e permitir que o modelo passar parâmetros, você deve criar um processador de diretriz personalizado.
Alguns exemplos de processadores de diretriz personalizadas podem ser:
Um processador de diretriz para retornar dados de um banco de dados que aceita um nome de usuário e senha como parâmetros.
Um processador de diretriz para abrir e ler um arquivo que aceita o nome do arquivo como um parâmetro.
Partes de capital de um processador de diretriz personalizado
Para desenvolver um processador de diretriz, você deve criar uma classe que herda a partir de um DirectiveProcessor ou RequiresProvidesDirectiveProcessor.
O mais importante DirectiveProcessor que você deve implementar métodos são os seguintes.
bool IsDirectiveSupported(string directiveName)-Retorno true se seu processador de diretriz pode lidar com a diretiva nomeada.
void ProcessDirective (string directiveName, IDictionary<string, string> arguments)-O mecanismo de modelo chama esse método para cada ocorrência de uma diretiva no modelo.O processador deve salvar os resultados.
Após todas as chamadas para ProcessDirective (), o mecanismo de modelagem irá chamar esses métodos:
string[] GetReferencesForProcessingRun()-Retorne os nomes dos assemblies que requer que o código do modelo.
string[] GetImportsForProcessingRun()-Retorne os namespaces que podem ser usados no código de modelo.
string GetClassCodeForProcessingRun()-Retorne o código de métodos, propriedades e outras declarações que o código do modelo pode usar.A maneira mais fácil de fazer isso é criar uma seqüência de caracteres que contém o C# ou Visual Basic de código.Para tornar o seu processador de diretriz capaz de que está sendo chamado a partir de um modelo que use qualquer linguagem do CLR, você pode construir as instruções de como uma árvore CodeDom e em seguida, retorne o resultado da serialização a árvore no idioma usado pelo modelo.
Para obter mais informações, consulte Passo a passo: Criando um processador de diretiva personalizada.
Nesta seção
Implantação de um processador de diretiva personalizada
Explica como registrar um processador de diretriz personalizado.Passo a passo: Criando um processador de diretiva personalizada
Descreve como criar um processador de diretriz personalizado, como registrar e testar o processador de diretriz e como formatar o arquivo de saída como HTML.