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 | |
---|---|---|
RequiresProvidesDirectiveProcessor | Se sottoposto a override in una classe derivata, inizializza una nuova istanza della classe RequiresProvidesDirectiveProcessor. |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
Errors | Ottiene gli errori che si sono verificati durante l'elaborazione delle direttive. (Ereditato da DirectiveProcessor) | |
FriendlyName | Se sottoposta a override in una classe derivata, ottiene il nome descrittivo del processore di direttiva. | |
Host | Ottiene l'host associato a questo processore di direttiva. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Equals | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) | |
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) | |
FinishProcessingRun | Finisce un ciclo di elaborazione della direttiva. (Esegue l'override di DirectiveProcessor.FinishProcessingRun()). | |
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. | |
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. | |
GenerateTransformCode | Se sottoposto a override in una classe derivata, aggiunge codice alla classe Transformation generata. | |
GetClassCodeForProcessingRun | Ottiene codice da aggiungere alla classe Transformation generata. (Esegue l'override di DirectiveProcessor.GetClassCodeForProcessingRun()). | |
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) | |
GetImportsForProcessingRun | Ottiene gli spazi dei nomi da importare nella classe Transformation generata. (Esegue l'override di DirectiveProcessor.GetImportsForProcessingRun()). | |
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()). | |
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()). | |
GetReferencesForProcessingRun | Ottiene riferimenti da passare al compilatore della classe Transformation generata. (Esegue l'override di DirectiveProcessor.GetReferencesForProcessingRun()). | |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) | |
Initialize | Inizializza un'istanza del processore di direttiva. (Esegue l'override di DirectiveProcessor.Initialize(ITextTemplatingEngineHost)). | |
InitializeProvidesDictionary | Se sottoposto a override in una classe derivata specifica i parametri provides per ogni direttiva. | |
InitializeRequiresDictionary | Se sottoposto a override in una classe derivata specifica i parametri requires per ogni direttiva. | |
IsDirectiveSupported | Quando è sottoposto a override in una classe derivata, determina se il processore di direttiva supporta la direttiva specificata. (Ereditato da DirectiveProcessor) | |
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) | |
PostProcessArguments | Se sottoposto a override in una classe derivata consente alle classi derivate di apportare qualsiasi modifica ai parametri che forniscono e richiedono. | |
ProcessDirective | Elabora una singola direttiva da un file modello di testo. (Esegue l'override di DirectiveProcessor.ProcessDirective(String, IDictionary<String, String>)). | |
ProvideUniqueId | Fornisce un ID che identifica una chiamata al processore di direttiva. | |
StartProcessingRun | Avvia un processore di direttiva. (Esegue l'override di DirectiveProcessor.StartProcessingRun(CodeDomProvider, String, CompilerErrorCollection)). | |
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:
StartProcessingRun(CodeDomProvider)
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