Partager via


RequiresProvidesDirectiveProcessor.GeneratePostInitializationCode, méthode

En cas de substitution dans une classe dérivée, ajoute du code au code d'initialisation de la classe de transformation générée. Ce code est ajouté après l'initialisation de la classe de base.

Espace de noms :  Microsoft.VisualStudio.TextTemplating
Assembly :  Microsoft.VisualStudio.TextTemplating.12.0 (dans Microsoft.VisualStudio.TextTemplating.12.0.dll)

Syntaxe

'Déclaration
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>
)

Paramètres

  • directiveName
    Type : String

    Nom de la directive.

  • codeBuffer
    Type : StringBuilder

    Mémoire tampon qui concatène le code que tous les processeurs de directive doivent exécuter après l'initialisation de la classe de base lors d'une série de traitement. Tout code devant être exécuté par ce processeur de directive pour cette directive une fois la classe de base initialisée doit être concaténé dans cette mémoire tampon.

  • languageProvider
    Type : CodeDomProvider

    Générateur de code qui crée le code à ajouter à codeBuffer.

  • requiresArguments
    Type : IDictionary<String, String>

    Paramètres standard requis par le processeur de directive.

  • providesArguments
    Type : IDictionary<String, String>

    Paramètres standard fournis par le processeur de directive.

Notes

Étant donné que GenerateTransformCode peut ajouter des méthodes à la classe de transformation générée, le code d'initialisation est souvent obligatoire pour appeler ces méthodes.

Cette méthode est appelée une fois pour chaque directive que ce processeur traite. Par conséquent, vous pouvez ajouter le code pour chaque directive à codeBuffer. GetPostInitializationCodeForProcessingRun retourne le contenu de codeBuffer après que toutes les directives ont été traitées.

Cette méthode est appelée par ProcessDirective.

Exemples

Cet exemple génère du code après que la classe de base a été initialisée. Cet exemple est extrait d'un exemple plus complet pour la classe RequiresProvidesDirectiveProcessor.

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 + "\");");
}
}

Sécurité .NET Framework

Voir aussi

Référence

RequiresProvidesDirectiveProcessor Classe

Microsoft.VisualStudio.TextTemplating, espace de noms

GeneratePreInitializationCode

GenerateTransformCode

ProcessDirective

GetPostInitializationCodeForProcessingRun