Compartir a través de


RequiresProvidesDirectiveProcessor (Clase)

Clase base abstracta de un procesador de directivas que define e implementa un modelo de diseño denominado requiere/proporciona.

Jerarquía de herencia

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

Espacio de nombres:  Microsoft.VisualStudio.TextTemplating
Ensamblado:  Microsoft.VisualStudio.TextTemplating.12.0 (en Microsoft.VisualStudio.TextTemplating.12.0.dll)

Sintaxis

'Declaración
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

El tipo RequiresProvidesDirectiveProcessor expone los siguientes miembros.

Constructores

  Nombre Descripción
Método protegido RequiresProvidesDirectiveProcessor Cuando se reemplaza en una clase derivada, inicializa una nueva instancia de la clase RequiresProvidesDirectiveProcessor.

Arriba

Propiedades

  Nombre Descripción
Propiedad protegida Errors Obtiene los errores que se produjeron al procesar las directivas. (Se hereda de DirectiveProcessor).
Propiedad protegida FriendlyName Cuando se reemplaza en una clase derivada, obtiene el nombre descriptivo del procesador de directivas.
Propiedad protegida Host Obtiene el host asociado a este procesador de directivas.

Arriba

Métodos

  Nombre Descripción
Método público Equals Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegido Finalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de que sea reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método público FinishProcessingRun Finaliza una fase de procesamiento de directivas. (Invalida a DirectiveProcessor.FinishProcessingRun()).
Método protegido GeneratePostInitializationCode Cuando se reemplaza en una clase derivada, agrega el código al código de inicialización para la clase de transformación generada.Este código se agrega después de inicializarse la clase base.
Método protegido GeneratePreInitializationCode Cuando se reemplaza en una clase derivada, agrega el código al código de inicialización de la clase de transformación generada.Este código se agrega antes de inicializarse la clase base.
Método protegido GenerateTransformCode Cuando se reemplaza en una clase derivada, agrega el código a la clase de transformación generada.
Método público GetClassCodeForProcessingRun Obtiene el código que se va a agregar a la clase de transformación generada. (Invalida a DirectiveProcessor.GetClassCodeForProcessingRun()).
Método público GetHashCode Sirve como la función hash predeterminada. (Se hereda de Object).
Método público GetImportsForProcessingRun Obtiene los espacios de nombres que se van a importar en la clase de transformación generada. (Invalida a DirectiveProcessor.GetImportsForProcessingRun()).
Método público GetPostInitializationCodeForProcessingRun Obtiene el código que se ha de inicializar cuando se inicialice la clase de transformación generada como consecuencia de la ejecución de procesamiento más reciente. (Invalida a DirectiveProcessor.GetPostInitializationCodeForProcessingRun()).
Método público GetPreInitializationCodeForProcessingRun Obtiene el código que se ha de inicializar cuando se inicialice la clase de transformación generada como consecuencia de la ejecución de procesamiento más reciente. (Invalida a DirectiveProcessor.GetPreInitializationCodeForProcessingRun()).
Método público GetReferencesForProcessingRun Obtiene las referencias que se van a pasar al compilador de la clase de transformación generada. (Invalida a DirectiveProcessor.GetReferencesForProcessingRun()).
Método público GetTemplateClassCustomAttributes Obtenga cualquier atributo personalizado para colocar la clase de plantilla. (Se hereda de DirectiveProcessor).
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público Initialize Inicializa una instancia del procesador de directivas. (Invalida a DirectiveProcessor.Initialize(ITextTemplatingEngineHost)).
Método protegido InitializeProvidesDictionary Cuando se reemplaza en una clase derivada, especifica los parámetros proporciona para cada directiva.
Método protegido InitializeRequiresDictionary Cuando se reemplaza en una clase derivada, especifica los parámetros requiere para cada directiva.
Método público IsDirectiveSupported Cuando se reemplaza en una clase derivada, determina si el procesador de directivas admite la directiva especificada. (Se hereda de DirectiveProcessor).
Método protegido MemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegido PostProcessArguments Cuando se reemplaza en una clase derivada, permite que las clases derivadas introduzcan modificaciones en los parámetros que proporcionan y requieren.
Método público ProcessDirective Procesa una sola directiva de un archivo de plantilla de texto. (Invalida a DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>)).
Método protegido ProvideUniqueId Proporciona un identificador que identifica una llamada al procesador de directivas.
Método público StartProcessingRun Inicia un procesador de directivas. (Invalida a DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection)).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).

Arriba

Implementaciones explícitas de interfaces

  Nombre Descripción
Implementación explícita de interfacesPropiedad privada IDirectiveProcessor.Errors (Se hereda de DirectiveProcessor).
Implementación explícita de interfacesPropiedad privada IDirectiveProcessor.RequiresProcessingRunIsHostSpecific (Se hereda de DirectiveProcessor).
Implementación explícita de interfacesMétodo privado IDirectiveProcessor.SetProcessingRunIsHostSpecific (Se hereda de DirectiveProcessor).

Arriba

Comentarios

Para crear un procesador de directivas personalizado, crea una clase que herede de DirectiveProcessor o RequiresProvidesDirectiveProcessor.

DirectiveProcessor implementa la interfaz que se exige para capturar los parámetros del usuario y proporciona la funcionalidad para la clase de transformación generada. RequiresProvidesDirectiveProcessorRequiresProvidesDirectiveProcessor implementa el modelo de diseño, requiere/proporciona, para su procesador de directivas. RequiresProvidesDirectiveProcessor proporciona utilidades adicionales para capturar los parámetros del usuario y proporciona la funcionalidad para la clase de transformación generada con nombres de propiedad específicos.

Para obtener más información, vea Crear procesadores de directivas personalizadas para las plantillas de texto T4.

El motor de transformación contiene un singleton para cualquier clase RequiresProvidesDirectiveProcessor necesaria.

RequiresProvidesDirectiveProcessor implementa una máquina de estados.

Por ejemplo, si una plantilla de texto tiene tres llamadas de directiva al mismo procesador de directivas, el motor llama a los siguientes métodos en orden:

Ejemplos

En el siguiente ejemplo se muestra cómo 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;
}
}
}
}

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Referencia

Microsoft.VisualStudio.TextTemplating (Espacio de nombres)

DirectiveProcessor

Otros recursos

Crear procesadores de directivas personalizadas para las plantillas de texto T4