Compartilhar via


A criação de processadores de diretiva de modelo de texto personalizado

O processo de transformação do modelo de texto leva um o 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ê cria 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 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 então 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 de um modelo de texto em Visual Studio, você deve registrar o proprietário.

Para obter mais informações sobre como adicionar a chave do registro, consulte A 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 de 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, pois você pode usá-lo para o fator de código e compartilhá-lo entre 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 entidade 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 os métodos que você deve implementar são como segue:

  • bool IsDirectiveSupported(string directiveName)-Retorno true se o processador de diretriz pode lidar com a diretiva nomeado.

  • 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 usa qualquer linguagem do CLR, você pode construir as instruções de como uma árvore CodeDom e, em seguida, retornar o resultado da árvore de no idioma usado pelo modelo de serialização.

  • Para obter mais informações, consulte Demonstra Passo a passo: Criando um processador de diretiva personalizada.

Nesta seção