Condividi tramite


Metodo RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode

Una volta sottoposto a override in una classe derivata, aggiungere codice al codice di inizializzazione per la classe della trasformazione generata.Questo codice viene aggiunto al termine della classe base viene inizializzata.

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

Sintassi

'Dichiarazione
Protected MustOverride Sub GeneratePostInitializationCode ( _
    directiveName As String, _
    codeBuffer As StringBuilder, _
    languageProvider As CodeDomProvider, _
    requiresArguments As IDictionary(Of String, String), _
    providesArguments As IDictionary(Of String, String) _
)
protected abstract void GeneratePostInitializationCode(
    string directiveName,
    StringBuilder codeBuffer,
    CodeDomProvider languageProvider,
    IDictionary<string, string> requiresArguments,
    IDictionary<string, string> providesArguments
)
protected:
virtual void GeneratePostInitializationCode(
    String^ directiveName, 
    StringBuilder^ codeBuffer, 
    CodeDomProvider^ languageProvider, 
    IDictionary<String^, String^>^ requiresArguments, 
    IDictionary<String^, String^>^ providesArguments
) abstract
abstract GeneratePostInitializationCode : 
        directiveName:string * 
        codeBuffer:StringBuilder * 
        languageProvider:CodeDomProvider * 
        requiresArguments:IDictionary<string, string> * 
        providesArguments:IDictionary<string, string> -> unit 
protected abstract function GeneratePostInitializationCode(
    directiveName : String, 
    codeBuffer : StringBuilder, 
    languageProvider : CodeDomProvider, 
    requiresArguments : IDictionary<String, String>, 
    providesArguments : IDictionary<String, String>
)

Parametri

  • codeBuffer
    Tipo: System.Text.StringBuilder
    Il buffer che concatena il codice che tutti i processori di direttiva devono eseguire dopo che la classe di base viene inizializzata durante l'esecuzione di elaborazione.Tutto il codice che questo processore di direttiva deve eseguire per questa direttiva dopo che la classe di base viene inizializzata deve essere concatenatoe a questo buffer.

Note

Poiché GenerateTransformCode possibile aggiungere metodi alla classe della trasformazione generata, il codice di inizializzazione è spesso necessario chiamare tali metodi.

Questo metodo viene chiamato una volta per ogni direttiva che questo processore elabora.Di conseguenza, è possibile aggiungere il codice per ciascuna direttiva su codeBuffer.GetPostInitializationCodeForProcessingRun restituisce il contenuto di codeBuffer dopo tutte le direttive sono state elaborate.

Questo metodo viene chiamato da l ProcessDirective.

Esempi

In questo esempio viene generato il codice dopo che la classe di base viene inizializzata.Questo esempio fa parte di un esempio più esaustivo per RequiresProvidesDirectiveProcessor classe.

protected override void GeneratePostInitializationCode(string directiveName, StringBuilder codeBuffer, System.CodeDom.Compiler.CodeDomProvider languageProvider, IDictionary<string, string> requiresArguments, IDictionary<string, string> providesArguments)
{
if (StringComparer.InvariantCultureIgnoreCase.Compare(directiveName, DomDirectiveTag) == 0)
{
// Resolve the file name of the specified "requires" xml file
// This allows the xml file to be a path relative to the text template that is using the directive processor.
string xmlFile = this.Host.ResolvePath(requiresArguments[XmlFileRequiredParameterName]);
if (!File.Exists(xmlFile))
{
throw new FileNotFoundException("Unable to load " + XmlFileRequiredParameterName, xmlFile);
}

string fieldName = providesArguments[DomProvidedParameterName].ToLower(CultureInfo.InvariantCulture) + "Value";

// Write code to initialize the domValue field by loading the xml file.
// The property is named "Dom" by default but the template writer may have changed the name using a custom provides clause like 'provides="Dom=AnotherName"'
codeBuffer.Append(
"this." + fieldName + " = new XmlDocument();" +
"this." + fieldName + ".Load(@\"" + xmlFile + "\");");
}
}

Sicurezza di .NET Framework

Vedere anche

Riferimenti

RequiresProvidesDirectiveProcessor Classe

Spazio dei nomi Microsoft.VisualStudio.TextTemplating

GeneratePreInitializationCode

GenerateTransformCode

ProcessDirective

GetPostInitializationCodeForProcessingRun