Partilhar via


Classe RequiresProvidesDirectiveProcessor

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

Hierarquia de herança

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

Namespace:  Microsoft.VisualStudio.TextTemplating
Assembly:  Microsoft.VisualStudio.TextTemplating.12.0 (em Microsoft.VisualStudio.TextTemplating.12.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 classe RequiresProvidesDirectiveProcessor .

Superior

Propriedades

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

Superior

Métodos

  Nome Descrição
Método público Equals Determines whether the specified object is equal to the current object. (Herdado de Object.)
Método protegido Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Herdado de Object.)
Método público FinishProcessingRun Concluir um círculo de processamento externo. (Substitui DirectiveProcessor.FinishProcessingRun().)
Método protegido GeneratePostInitializationCode Quando substituído em uma classe derivada, adicione o código para o código de inicialização para a classe gerada de transformação.Esse código é adicionado após a classe base é inicializada.
Método protegido GeneratePreInitializationCode Quando substituído em uma classe derivada, adicione o código para o código de inicialização da classe gerada de transformação.Esse código é adicionado antes que a classe base é inicializada.
Método protegido GenerateTransformCode Quando substituído em uma classe derivada, adicione o código à classe gerada de transformação.
Método público GetClassCodeForProcessingRun Obtém o código para adicionar à classe gerada de transformação. (Substitui DirectiveProcessor.GetClassCodeForProcessingRun().)
Método público GetHashCode Serves as the default hash function. (Herdado de Object.)
Método público GetImportsForProcessingRun Obtém namespaces para importar na classe gerada de transformação. (Substitui DirectiveProcessor.GetImportsForProcessingRun().)
Método público GetPostInitializationCodeForProcessingRun Obtém o código para inicializar quando a classe gerada de transformação é inicializada, como resultado da execução mais recente de processamento. (Substitui DirectiveProcessor.GetPostInitializationCodeForProcessingRun().)
Método público GetPreInitializationCodeForProcessingRun Obtém o código para inicializar quando a classe gerada de transformação é inicializada, como resultado da execução mais recente de processamento. (Substitui DirectiveProcessor.GetPreInitializationCodeForProcessingRun().)
Método público GetReferencesForProcessingRun Obtém referências a passo 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 Gets the Type of the current instance. (Herdado de Object.)
Método público Initialize Inicializa uma instância do processador externo. (Substitui DirectiveProcessor.Initialize(ITextTemplatingEngineHost).)
Método protegido InitializeProvidesDictionary Quando substituído em uma classe derivada, especifica fornece parâmetros para cada diretiva.
Método protegido InitializeRequiresDictionary Quando substituído em uma classe derivada, especifica requer parâmetros para cada diretiva.
Método público IsDirectiveSupported Quando substituído em uma classe derivada, determina se o processador diretivo oferece suporte a diretiva especificada. (Herdado de DirectiveProcessor.)
Método protegido MemberwiseClone Creates a shallow copy of the current Object. (Herdado de Object.)
Método protegido PostProcessArguments Quando substituído em uma classe derivada, permite que classes derivadas de todas as alterações aos parâmetros que fornecem 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 um ID que identifica uma chamada para o processador externo.
Método público StartProcessingRun Inicia um processador externo. (Substitui DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection).)
Método público ToString Returns a string that represents the current object. (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 diretivo personalizado, você cria uma classe que herda de DirectiveProcessor ou de RequiresProvidesDirectiveProcessor.

DirectiveProcessor implementa a interface que é necessária para capturar parâmetros de usuário, e fornece a funcionalidade para a classe gerada de transformação. RequiresProvidesDirectiveProcessorRequiresProvidesDirectiveProcessor implementar o padrão de design, requer/fornece, o processador externo. RequiresProvidesDirectiveProcessor fornece recursos adicionais para definições de captura de usuário, e fornece a funcionalidade à classe gerada de transformação com nomes de propriedade específica.

Para obter mais informações, consulte Criando processadores de diretiva de modelo de texto T4 personalizados.

O mecanismo de transformação contém um único para qualquer classe de RequiresProvidesDirectiveProcessor necessário.

RequiresProvidesDirectiveProcessor implementa um computador de estado.

Por exemplo, se um modelo de texto tem três chamadas de diretiva para o mesmo processador diretivo, o mecanismo chama os métodos a seguir em ordem:

Exemplos

O exemplo a seguir demonstra como usar 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

Criando processadores de diretiva de modelo de texto T4 personalizados