Compartilhar 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.10.0 (em Microsoft.VisualStudio.TextTemplating.10.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 de RequiresProvidesDirectiveProcessor classe.

Início

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 o processador de diretriz.

Início

Métodos

  Nome Descrição
Método público Equals Determina se o especificado Object é igual a atual Object. (Herdado de Object.)
Método protegido Finalize Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado 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 a classe de transformação gerada. (Substitui DirectiveProcessor.GetClassCodeForProcessingRun().)
Método público GetHashCode Serves as a hash function for a particular type. (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 GetType Obtém o 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 diretriz suporta a diretiva especificada. (Herdado de DirectiveProcessor.)
Método protegido MemberwiseClone Cria uma cópia superficial do atual Object. (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 um string que representa o objeto atual. (Herdado de Object.)

Início

Comentários

Para criar um processador de diretriz personalizado, você cria 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 funcionalidade para a classe de transformação gerada. RequiresProvidesDirectiveProcessor RequiresProvidesDirectiveProcessorimplementa 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 A criação de processadores de diretiva de modelo de texto personalizado.

O mecanismo de transformação contém um singleton para qualquer necessárias RequiresProvidesDirectiveProcessor classe.

RequiresProvidesDirectiveProcessorimplementa uma máquina de estado.

Por exemplo, se um modelo de texto tiver três chamadas de diretivas no mesmo processador de diretiva, 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 static (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

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