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 | |
---|---|---|
RequiresProvidesDirectiveProcessor | Quando substituído em uma classe derivada, inicializa uma nova instância da classe RequiresProvidesDirectiveProcessor . |
Superior
Propriedades
Nome | Descrição | |
---|---|---|
Errors | Obtém os erros que ocorreram durante o processamento de políticas. (Herdado de DirectiveProcessor.) | |
FriendlyName | Quando substituído em uma classe derivada, obtém o nome amigável do processador externo. | |
Host | Obtém o host que está associado com esse processador externo. |
Superior
Métodos
Nome | Descrição | |
---|---|---|
Equals | Determines whether the specified object is equal to the current object. (Herdado de Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Herdado de Object.) | |
FinishProcessingRun | Concluir um círculo de processamento externo. (Substitui DirectiveProcessor.FinishProcessingRun().) | |
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. | |
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. | |
GenerateTransformCode | Quando substituído em uma classe derivada, adicione o código à classe gerada de transformação. | |
GetClassCodeForProcessingRun | Obtém o código para adicionar à classe gerada de transformação. (Substitui DirectiveProcessor.GetClassCodeForProcessingRun().) | |
GetHashCode | Serves as the default hash function. (Herdado de Object.) | |
GetImportsForProcessingRun | Obtém namespaces para importar na classe gerada de transformação. (Substitui DirectiveProcessor.GetImportsForProcessingRun().) | |
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().) | |
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().) | |
GetReferencesForProcessingRun | Obtém referências a passo para o compilador da classe gerada de transformação. (Substitui DirectiveProcessor.GetReferencesForProcessingRun().) | |
GetTemplateClassCustomAttributes | Obtenha todos os atributos personalizados para colocar na classe de modelo. (Herdado de DirectiveProcessor.) | |
GetType | Gets the Type of the current instance. (Herdado de Object.) | |
Initialize | Inicializa uma instância do processador externo. (Substitui DirectiveProcessor.Initialize(ITextTemplatingEngineHost).) | |
InitializeProvidesDictionary | Quando substituído em uma classe derivada, especifica fornece parâmetros para cada diretiva. | |
InitializeRequiresDictionary | Quando substituído em uma classe derivada, especifica requer parâmetros para cada diretiva. | |
IsDirectiveSupported | Quando substituído em uma classe derivada, determina se o processador diretivo oferece suporte a diretiva especificada. (Herdado de DirectiveProcessor.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Herdado de Object.) | |
PostProcessArguments | Quando substituído em uma classe derivada, permite que classes derivadas de todas as alterações aos parâmetros que fornecem e exigem. | |
ProcessDirective | Processa uma única diretiva de um arquivo de modelo de texto. (Substitui DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>).) | |
ProvideUniqueId | Fornece um ID que identifica uma chamada para o processador externo. | |
StartProcessingRun | Inicia um processador externo. (Substitui DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection).) | |
ToString | Returns a string that represents the current object. (Herdado de Object.) |
Superior
Implementações explícitas da interface
Nome | Descrição | |
---|---|---|
IDirectiveProcessor.Errors | (Herdado de DirectiveProcessor.) | |
IDirectiveProcessor.RequiresProcessingRunIsHostSpecific | (Herdado de DirectiveProcessor.) | |
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:
StartProcessingRun
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
Outros recursos
Criando processadores de diretiva de modelo de texto T4 personalizados