Partilhar via


Classe RequiresProvidesDirectiveProcessor

A classe base abstrata para um processador de diretriz que define e implementa um padrão de design chamado requer/fornece.

Hierarquia de herança

System.Object
  Microsoft.VisualStudio.TextTemplating.DirectiveProcessor
    Microsoft.VisualStudio.TextTemplating.RequiresProvidesDirectiveProcessor

Namespace:  Microsoft.VisualStudio.TextTemplating
Assembly:  Microsoft.VisualStudio.TextTemplating.11.0 (em Microsoft.VisualStudio.TextTemplating.11.0.dll)

Sintaxe

'Declaração
Public MustInherit Class RequiresProvidesDirectiveProcessor _
    Inherits DirectiveProcessor
public abstract class RequiresProvidesDirectiveProcessor : DirectiveProcessor
public ref class RequiresProvidesDirectiveProcessor abstract : public DirectiveProcessor
[<AbstractClass>]
type RequiresProvidesDirectiveProcessor =  
    class
        inherit DirectiveProcessor
    end
public abstract class RequiresProvidesDirectiveProcessor extends DirectiveProcessor

O tipo RequiresProvidesDirectiveProcessor expõe os membros a seguir.

Construtores

  Nome Descrição
Método protegido RequiresProvidesDirectiveProcessor Quando substituído em uma classe derivada, inicializa uma nova instância da RequiresProvidesDirectiveProcessor classe.

Superior

Propriedades

  Nome Descrição
Propriedade protegida Errors Obtém os erros que ocorreram durante o processamento de diretivas. (Herdado de DirectiveProcessor.)
Propriedade protegida FriendlyName Quando substituído em uma classe derivada, obtém o nome amigável do processador de diretriz.
Propriedade protegida Host Obtém o host que está associado com este processador de diretriz.

Superior

Métodos

  Nome Descrição
Método público Equals determina se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método protegido Finalize Permite que um objeto tentar liberar recursos e realizar outras operações de limpeza antes de ser recuperados pela coleta de lixo. (Herdado de Object.)
Método público FinishProcessingRun Concluir uma rodada de processamento da diretriz. (Substitui DirectiveProcessor.FinishProcessingRun().)
Método protegido GeneratePostInitializationCode Quando substituído em uma classe derivada, adiciona código para o código de inicialização para a classe de transformação gerada.Esse código é adicionado depois que a classe base é inicializada.
Método protegido GeneratePreInitializationCode Quando substituído em uma classe derivada, adiciona código para o código de inicialização da classe gerada de transformação.Esse código é adicionado antes que a classe base seja inicializada.
Método protegido GenerateTransformCode Quando substituído em uma classe derivada, adiciona código para a classe de transformação gerada.
Método público GetClassCodeForProcessingRun Obtém o código para adicionar à classe de transformação gerada. (Substitui DirectiveProcessor.GetClassCodeForProcessingRun().)
Método público GetHashCode Serve como uma função de hash para um tipo específico. (Herdado de Object.)
Método público GetImportsForProcessingRun Obtém os namespaces para importar para a classe de transformação gerada. (Substitui DirectiveProcessor.GetImportsForProcessingRun().)
Método público GetPostInitializationCodeForProcessingRun Obtém o código para inicializar quando a classe de transformação gerado é inicializada, como conseqüência do processamento mais recente executar. (Substitui DirectiveProcessor.GetPostInitializationCodeForProcessingRun().)
Método público GetPreInitializationCodeForProcessingRun Obtém o código para inicializar quando a classe de transformação gerado é inicializada, como conseqüência do processamento mais recente executar. (Substitui DirectiveProcessor.GetPreInitializationCodeForProcessingRun().)
Método público GetReferencesForProcessingRun Obtém as referências para passar para o compilador da classe gerada de transformação. (Substitui DirectiveProcessor.GetReferencesForProcessingRun().)
Método público GetTemplateClassCustomAttributes Obtenha todos os atributos personalizados para colocar na classe de modelo. (Herdado de DirectiveProcessor.)
Método público GetType Obtém Type da instância atual. (Herdado de Object.)
Método público Initialize Inicializa uma instância do processador de diretriz. (Substitui DirectiveProcessor.Initialize(ITextTemplatingEngineHost).)
Método protegido InitializeProvidesDictionary Quando substituído em uma classe derivada, especifica o fornece parâmetros para cada diretiva.
Método protegido InitializeRequiresDictionary Quando substituído em uma classe derivada, especifica o requer parâmetros para cada diretiva.
Método público IsDirectiveSupported Quando substituído em uma classe derivada, determina se o processador de diretiva oferece suporte a diretiva especificada. (Herdado de DirectiveProcessor.)
Método protegido MemberwiseClone Cria uma cópia superficial de Objectatual. (Herdado de Object.)
Método protegido PostProcessArguments Quando substituído em uma classe derivada, permite que as classes derivadas fazer quaisquer modificações para os parâmetros que eles oferecem e exigem.
Método público ProcessDirective Processa uma única diretiva de um arquivo de modelo de texto. (Substitui DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>).)
Método protegido ProvideUniqueId Fornece uma ID que identifica uma chamada para o processador de diretriz.
Método público StartProcessingRun Inicia um processador de diretriz. (Substitui DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection).)
Método público ToString Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object.)

Superior

Implementações explícitas da interface

  Nome Descrição
Implementação explícita da interfacePropriedade particular IDirectiveProcessor.Errors (Herdado de DirectiveProcessor.)
Implementação explícita da interfacePropriedade particular IDirectiveProcessor.RequiresProcessingRunIsHostSpecific (Herdado de DirectiveProcessor.)
Implementação explícita da interfaceMétodo particular IDirectiveProcessor.SetProcessingRunIsHostSpecific (Herdado de DirectiveProcessor.)

Superior

Comentários

Para criar um processador de diretriz personalizado, você pode criar uma classe que herda a partir de um DirectiveProcessor ou RequiresProvidesDirectiveProcessor.

DirectiveProcessorimplementa a interface que é necessário para capturar os parâmetros do usuário e fornece a funcionalidade para a classe de transformação gerada.RequiresProvidesDirectiveProcessorRequiresProvidesDirectiveProcessorimplementa o padrão de design, /fornecem requers, o processador de diretriz.RequiresProvidesDirectiveProcessorfornece recursos adicionais para capturar os parâmetros do usuário e fornece funcionalidade para a classe de transformação gerado com nomes de propriedade específica.

Para obter mais informações, consulte Criação de processadores de diretiva de modelo personalizado T4 texto.

O mecanismo de transformação mantém um singleton para qualquer argumento RequiresProvidesDirectiveProcessor classe.

RequiresProvidesDirectiveProcessorimplementa uma máquina de estado.

Por exemplo, se um modelo de texto tiver três chamadas diretriz para o mesmo processador de diretriz, o mecanismo chama os seguintes métodos na ordem:

Exemplos

O exemplo a seguir demonstra como usar o RequiresProvidesDirectiveProcessor.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualStudio.TextTemplating;
using System.Xml;
using System.IO;
using System.Globalization;

namespace Microsoft.Samples.VisualStudio.TextTemplating.DirectiveProcessors
{
public class DomDirectiveProcessor : RequiresProvidesDirectiveProcessor
{

// Name of the tag that this directive processor supports.
private const string DomDirectiveTag = "dom";

//Name of the parameter that must be provided for this directive processor to load an XML file
private const string XmlFileRequiredParameterName = "XmlFile";

// Default name of the property that this provider adds to the generated transform class.
private const string DomProvidedParameterName = "Dom";

// Set up the dictionary of items that this directive processor will provide.
protected override void InitializeProvidesDictionary(string directiveName, IDictionary<string, string> providesDictionary)
{
if (StringComparer.InvariantCultureIgnoreCase.Compare(directiveName, DomDirectiveTag) == 0)
{
// Populate the dictionary with defualt names.
providesDictionary[DomProvidedParameterName] = DomProvidedParameterName;
}
}

// Set up the dictionary of items that this directive processor requires to complete.
protected override void InitializeRequiresDictionary(string directiveName, IDictionary<string, string> requiresDictionary)
{
if (StringComparer.InvariantCultureIgnoreCase.Compare(directiveName, DomDirectiveTag) == 0)
{
// Initialize the dictionary with nulls for each required parameter.
requiresDictionary[XmlFileRequiredParameterName] = null;
}
}
}
}

Acesso thread-safe

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.VisualStudio.TextTemplating

DirectiveProcessor

Outros recursos

Criação de processadores de diretiva de modelo personalizado T4 texto