Condividi tramite


Classe RequiresProvidesDirectiveProcessor

Classe base astratta di un processore di direttiva che definisce e implementa un modello di progettazione denominato requires/provides.

Gerarchia di ereditarietà

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

Spazio dei nomi:  Microsoft.VisualStudio.TextTemplating
Assembly:  Microsoft.VisualStudio.TextTemplating.10.0 (in Microsoft.VisualStudio.TextTemplating.10.0.dll)

Sintassi

'Dichiarazione
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

Il tipo RequiresProvidesDirectiveProcessor espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo protetto RequiresProvidesDirectiveProcessor Se sottoposto a override in una classe derivata, inizializza una nuova istanza della classe RequiresProvidesDirectiveProcessor.

In alto

Proprietà

  Nome Descrizione
Proprietà protetta. Errors Ottiene gli errori che si sono verificati durante l'elaborazione delle direttive. (Ereditato da DirectiveProcessor)
Proprietà protetta. FriendlyName Se sottoposta a override in una classe derivata, ottiene il nome descrittivo del processore di direttiva.
Proprietà protetta. Host Ottiene l'host associato a questo processore di direttiva.

In alto

Metodi

  Nome Descrizione
Metodo pubblico Equals Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico FinishProcessingRun Finisce un ciclo di elaborazione della direttiva. (Esegue l'override di DirectiveProcessor.FinishProcessingRun()).
Metodo protetto GeneratePostInitializationCode Se sottoposto a override in una classe derivata, aggiunge codice al codice di inizializzazione per la classe Transformation generata.Questo codice viene aggiunto dopo l'inizializzazione della classe base.
Metodo protetto GeneratePreInitializationCode Se sottoposto a override in una classe derivata, aggiunge codice al codice di inizializzazione della classe Transformation generata.Questo codice viene aggiunto prima dell'inizializzazione della classe base.
Metodo protetto GenerateTransformCode Se sottoposto a override in una classe derivata, aggiunge codice alla classe Transformation generata.
Metodo pubblico GetClassCodeForProcessingRun Ottiene codice da aggiungere alla classe Transformation generata. (Esegue l'override di DirectiveProcessor.GetClassCodeForProcessingRun()).
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetImportsForProcessingRun Ottiene gli spazi dei nomi da importare nella classe Transformation generata. (Esegue l'override di DirectiveProcessor.GetImportsForProcessingRun()).
Metodo pubblico GetPostInitializationCodeForProcessingRun Ottiene il codice da inizializzare quando la classe Transformation generata viene inizializzata a seguito dell'elaborazione più recente. (Esegue l'override di DirectiveProcessor.GetPostInitializationCodeForProcessingRun()).
Metodo pubblico GetPreInitializationCodeForProcessingRun Ottiene il codice da inizializzare quando la classe Transformation generata viene inizializzata a seguito dell'elaborazione più recente. (Esegue l'override di DirectiveProcessor.GetPreInitializationCodeForProcessingRun()).
Metodo pubblico GetReferencesForProcessingRun Ottiene riferimenti da passare al compilatore della classe Transformation generata. (Esegue l'override di DirectiveProcessor.GetReferencesForProcessingRun()).
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico Initialize Inizializza un'istanza del processore di direttiva. (Esegue l'override di DirectiveProcessor.Initialize(ITextTemplatingEngineHost)).
Metodo protetto InitializeProvidesDictionary Se sottoposto a override in una classe derivata specifica i parametri provides per ogni direttiva.
Metodo protetto InitializeRequiresDictionary Se sottoposto a override in una classe derivata specifica i parametri requires per ogni direttiva.
Metodo pubblico IsDirectiveSupported Quando è sottoposto a override in una classe derivata, determina se il processore di direttiva supporta la direttiva specificata. (Ereditato da DirectiveProcessor)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo protetto PostProcessArguments Se sottoposto a override in una classe derivata consente alle classi derivate di apportare qualsiasi modifica ai parametri che forniscono e richiedono.
Metodo pubblico ProcessDirective Elabora una singola direttiva da un file modello di testo. (Esegue l'override di DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>)).
Metodo protetto ProvideUniqueId Fornisce un ID che identifica una chiamata al processore di direttiva.
Metodo pubblico StartProcessingRun Avvia un processore di direttiva. (Esegue l'override di DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection)).
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Note

Per creare un processore di direttiva personalizzato, si crea una classe che eredita da DirectiveProcessor o RequiresProvidesDirectiveProcessor.

DirectiveProcessor implementa l'interfaccia richiesta per acquisire parametri dall'utente e fornisce la funzionalità per la classe di trasformazione generata. RequiresProvidesDirectiveProcessor RequiresProvidesDirectiveProcessor implementa il modello di progettazione, richiede/fornisce per il processore di direttiva. RequiresProvidesDirectiveProcessor fornisce funzionalità aggiuntive per acquisire parametri dall'utente e fornisce funzionalità alla classe di trasformazione generata con nomi di proprietà specifici.

Per ulteriori informazioni, vedere Creating Custom Text Template Directive Processors.

Il motore di trasformazione contiene un singleton per qualsiasi classe RequiresProvidesDirectiveProcessor obbligatoria.

RequiresProvidesDirectiveProcessor implementa una macchina a stati.

Ad esempio, se un modello di testo dispone di tre chiamate allo stesso processore di direttiva, il motore chiama i metodi seguenti secondo l'ordine:

Esempi

Nell'esempio seguente viene illustrato come utilizzare l'oggetto 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;
}
}
}
}

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.TextTemplating

DirectiveProcessor

Altre risorse

Creating Custom Text Template Directive Processors